Аргерих Л. О языке РНР. Часть 2. Страница 29


[Ww] [Rr] [Co] [Xx] [Pp] [Rr] [Ee] [Ss] [Ss]

Вспомним задачу со вставкой тегов HTML в гостевую книгу. Ее решает та­кой код:

echo(ereg_replace("<[">]*>","","<b>This is a test</b>"));

Этот код заменяет все теги HTML пустыми строками. Быстрый анализ выра­жения <[">]*> показывает, что оно соответствует строке, начинающейся сим­волом <, за которым следует хотя бы один символ, отличный от >, что опреде­ляется частью "[">}*", и, наконец, строка должна заканчиваться символом >.

В следующем примере выполняется проверка синтаксиса адреса электрон­ной почты без учета регистра с помощью построенного ранее регулярного выражения:

if (!eregi(""([-a-z0-9._]+f[-a-z0-9.]+(\.[-a-z0-9}+)+)*$"( Semail)) { echo("Invalid email syntax");

Регулярные выражения, совместимые с Perl

Начиная с версии 3.0.9 РНР поддерживает ряд функций Perl-совместимых регулярных выражений (PCRE). PCRE заключаются в ограничители, в ка­честве которых чаще всего выступает прямой слэш (/). Роль ограничителя может играть любой символ, за исключением буквенно-цифровых или об­ратного слэша (\). Если символ-ограничитель должен содержаться в самом выражении, то перед ним необходимо поставить обратный слэш.

Вот простое корректное PCRE, соответствующее слову в строке:

/php/

За конечным ограничителем могут следовать модификаторы, влияющие на характер соответствия. Модификаторы - это символы, придающие особый смысл предшествующему выражению. В следующем примере в качестве мо­дификатора выступает «i»:

/php/i

Ниже приводятся часто используемые модификаторы: • i

Поиск соответствия игнорирует регистр. Таким образом, «/php/i» будет соответствовать как строке «php», так и строке «РНР».

• х

Интерпретатор PCRE игнорирует пробельные символы, имеющиеся в шаблоне. Символы, находящиеся между непреобразованным символом # вне класса символов и следующим символом перевода строки, тоже игно­рируются, что позволяет писать комментарии внутри сложных PCRE, как показано ниже:

/ # Начало шаблона

\b # Искать границу слова

web Л Искать "web" \b и границу

/xi # х - для пробелов и комментариев, i - для игнорирования регистра

Как показывает этот пример, можно одновременно указывать несколько модификаторов.

• е

Этот модификатор используется только функцией Эта

функция осуществляет обычную замену ссылок \\ в строке замены, вы­полняет ее как код РНР и использует полученный результат для замены в обрабатываемой строке. Чтобы лучше разобраться, рассмотрим такой код:




Хотите владеть на своем участке красивые колодцем, который будет давать вам и питьевую воду? Тогда строительство колодцев в подмосковье от специалистов компании stroimoskolodec.ru именно для вас. Все сделают качественно, быстро и недорого.