Регулярные выражения (regular expressions) — это достаточно сложная, но интересная функциональная возможность PHP, которая позволяет выполнить основные и самые необходимые проверки переменных или произвести манипуляции над строками. Регулярные выражения представляют собой шаблон и призваны проверить, соответствует ли ему строка.
Язык PHP поддерживает два типа регулярных выражений — стандартные POSIX и Perl.
Функции регулярных выражений PHP
Функция ereg()
Функция ereg() ищет в строке соответствие регулярному выражению. В общем виде она выглядит следующим образом:
int ereg(
string pattern,
string string
[, array regs] )
У функции три параметра, первые два из которых являются обязательными:
- pattern — регулярное выражение;
- string — строка, в которой происходит поиск;
- regs — переменная, в которую будет помещен массив найденных значений.
Функция eregi()
Функция eregi() идентична ereg(), но при поиске нечувствительна к регистру букв. Параметры у обеих функций одинаковы.
Функция ereg_replace()
Эта функция ищет в строке регулярное выражение и заменяет его новым значением:
int ereg_replace(
string pattern,
string replacement,
string string)
Параметры функции:
- pattern — регулярное выражение;
- replacement — новое значение;
- string — строка, в которой происходит поиск.
Функция eregi_replace()
Функция eregi_replace() идентична ereg_replace(), но игнорирует регистр. Параметры у обеих функций одинаковы.
Функция split()
Функция split() разбивает строку в соответствии с регулярным выражением и возвращает массив строк. В общем виде она выглядит так:
array split(
string pattern,
string string
[, int limit] )
Параметры функции:
- pattern — регулярное выражение;
- string — строка, в которой происходит поиск;
- limit — ограничение количества найденных значений.
Функция spliti()
Функция spliti() идентична split(), но чувствительна к регистру букв во время поиска регулярного выражения.
Использование регулярных выражений
Рассмотрим простейший пример, в котором символы «BI» в строке заменяются HTML-тегами
<B><I>:
$text= "BI Hello world from PHP";
$newtext = eregi_replace("BI", "<B><I>", $text);
echo($newtext);
В виде регулярного выражения может выступать классическая подстройка, которую нужно найти.
Усложни задачу. Допустим, что нужно найти подстройку «BI» или «IB». Для этого можно разделить искомые подстройки символов вертикальной черты:
Усложни задачу. Допустим, что нужно найти подстройку «BI» или «IB». Для этого можно разделить искомые подстройки символов вертикальной черты:
$text= "BI Hello world from PHP";
$newtext = eregi_replace("BI|IB", "<B><I>", $text);
echo($newtext);
Вертикальная черта выступает в роли логического ИЛИ, и функция ищет любое из значений слева или справа от черты. Например:
$text= "BI IB IBB Hello world from PHP";
$newtext = eregi_replace("BI|IB|IBB", "replaced", $text);
echo($newtext);
Примеры регулярных выражений
1. Удаляем определённую ссылку в переменной text
$text = preg_replace("~<a href=\"http://www\.aaa\">[^<]+?</a>~",'',$text);
2. Удаляем комментарии в переменной text
$text = preg_replace('#<!--.*-->#sUi', '', $text);
3. Удаляем спецсимволы
$text = preg_replace ("~(\\\|\*|\?|\[|\?|\]|\(|\\\$|\))~", "",$text);
4. Удаляем всё, что между
< >
$text = preg_replace('/(<([^>]+)>)/U', '', $text);
5. Удаляем конкретные символы из строки
$text = str_replace('#39;', '', $text); // удаляем одинарные кавычки
$text = str_replace('"', '', $text); // удаляем двойные кавычки
$text = str_replace('&', '', $text); // удаляем амперсанд
$text = preg_replace('/([?!:^~|@№$–=+*&%.,;\[\]<>()_—«»#\/]+)/', '', $text); // удаляем недоспустимые символы