[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 - для игнорирования регистра
Как показывает этот пример, можно одновременно указывать несколько модификаторов.
• е
Этот модификатор используется только функцией Эта
функция осуществляет обычную замену ссылок \\ в строке замены, выполняет ее как код РНР и использует полученный результат для замены в обрабатываемой строке. Чтобы лучше разобраться, рассмотрим такой код: