Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: помогите упростить выражение и разрешить символ переноса строки
 
 автор: irr   (07.05.2006 в 09:56)   письмо автору
 
 

для защиты от китайского спама было введено такое вот регулярное выражение
if (!preg_match("|^[a-zA-Zа-яА-Я0-9\ё\Ё\~\'\!\@\"\#\№\$\;\%\^\:\&\?\*\(\)\-\_\=\+\{\[\}\]\|\\\/\,\<\.\>\ \†\‡\™\Ђ\©\‰\€\ћ\§]+$|", $message))

как его можно упросить? я вроде бы знаю, что если не экранировать символ "точка", то он будет означать сразу и точку, и запятую, и еще что-то. вот где бы найти пречень таких обобщенных символов, чтобы не экранировать их по-одиночке? дайте ссылку пожалуйста!

и еще, каким образом в это выражение включить символ переноса строки?

   
 
 автор: cheops   (07.05.2006 в 12:06)   письмо автору
 
   для: 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 - Любой символ, не образующий "слово"

   
 
 автор: irr   (07.05.2006 в 19:26)   письмо автору
 
   для: 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)) 
?> 

   
 
 автор: cheops   (07.05.2006 в 22:41)   письмо автору
 
   для: irr   (07.05.2006 в 19:26)
 

> но \n все равно почему-то не работает. как ее вставить-то?
А вы заключайте регулярное выражение в одинарные кавычки.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования