| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
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}@^;${match.2}.^;$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}@^;${match.2}.^;$match.3}]
$str[^str.match[@][gi]{@^;}]
$str