Новости | 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