parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

защита e-mail адресов от спамеров

Jk 10.09.2003 18:17

думал, как бы защитить е-mail адреса от спамеров, собирающих их со страниц. На сайте http://www.spectator.ru/ нашёл пару статеек на эту тему. воплотил в жизнь одну идею. Посмотрите пожалуйста, может можно легче сделать. Спасибо
#обрабатываем всё в постпроцессе
@postprocess[str]
#сначала заменим все готовые ссылки на e-mail на то что нужно
$str[^str.match[<a\s+href\s*=\s*"?\s*mailto:([a-zA-Z0-9_]+)@([a-zA-Z0-9_.]+)\s*"?>($match.1)?(.+?)</a>][gi]{
<script>
var mailto=('${match.1}'+'%40'+ '${match.2}')^;
document.write('<a href=mailto:'+mailto+'>$match.4</a>')^;
</script>
<noscript>[Включите javascript, чтобы увидеть email]</noscript>}]

#теперь заменим все нормальные адреса на то же самое (это если в тексте было просто написано мыло без ссылки)
$str[^str.match[([a-zA-Z0-9_]+)@([a-zA-Z0-9_]+)\.([a-zA-Z0-9_.]+)][gi]{
<script>
var mailto=('${match.1}'+'%40'+'${match.2}'+'.'+'${match.3}')^;
document.write('<a href=mailto:'+mailto+'>${match.1}&#64^;${match.2}&#46^;$match.3</a>')^;
</script>
<noscript>[Включите javascript, чтобы увидеть email]</noscript>}]

#добьём всё что осталось случайно
$str[^str.match[([a-zA-Z0-9_]+)@([a-zA-Z0-9_]+)\.([a-zA-Z0-9_.]+)][gi]{${match.1}&#64^;${match.2}&#46^;$match.3}]
$str[^str.match[@][gi]{&#64^;}]
$str