|
|
|
| для защиты от китайского спама было введено такое вот регулярное выражение
if (!preg_match("|^[a-zA-Zа-яА-Я0-9\ё\Ё\~\'\!\@\"\#\№\$\;\%\^\:\&\?\*\(\)\-\_\=\+\{\[\}\]\|\\\/\,\<\.\>\ \†\‡\™\Ђ\©\‰\€\ћ\§]+$|", $message))
|
как его можно упросить? я вроде бы знаю, что если не экранировать символ "точка", то он будет означать сразу и точку, и запятую, и еще что-то. вот где бы найти пречень таких обобщенных символов, чтобы не экранировать их по-одиночке? дайте ссылку пожалуйста!
и еще, каким образом в это выражение включить символ переноса строки? | |
|
|
|
|
|
|
|
для: irr
(07.05.2006 в 09:56)
| | Символ переноса строки обозначается как \n, если вы применяете данное выражение для текста состоящего из нескольких строк, необходимо добавить модификатор s.
<?php
if (!preg_match("|^[a-zA-Zа-яА-Я0-9\ё\Ё\~\'\!\@\"\#\№\$\;\%\^\:\&\?\*\(\)\-\_\=\+\{\[\}\]\|\\\/\,\<\.\>\ \†\‡\™\Ђ\©\‰\€\ћ\§]+$|s", $message))
?>
|
О классах символов можно почитать в справочнике функций http://www.softtime.ru/dic/id_dic=134&id_group=3
\d - любая десятичная цифра
\D - любой символ, кроме десятичной цифры
\s - любой пробельный символ
\S - любой непробельный символ
\w - Любой символ, образующий "слово"
\W - Любой символ, не образующий "слово" | |
|
|
|
|
|
|
|
для: cheops
(07.05.2006 в 12:06)
| | спасибо, но \n все равно почему-то не работает. как ее вставить-то?
<?php
// так не срабатывает:
if (!preg_match("|^[a-zA-Zа-яА-Я0-9\ё\Ё\~\'\!\@\"\#\n]+$|s", $message))
// так тоже не срабатывает:
if (!preg_match("|^[a-zA-Zа-яА-Я0-9\ё\Ё\~\'\!\@\"\#n]+$|s", $message))
// а вот так почему-то срабатывает:
if (!preg_match("|^[a-zA-Zа-яА-Я0-9\ё\Ё\~\'\!\@\"\#\
]+$|s", $message))
?>
|
| |
|
|
|
|
|
|
|
для: irr
(07.05.2006 в 19:26)
| | > но \n все равно почему-то не работает. как ее вставить-то?
А вы заключайте регулярное выражение в одинарные кавычки. | |
|
|
|