Языки программирования

Регулярные выражения в PHP

Регулярные выражения (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». Для этого можно разделить искомые подстройки символов вертикальной черты:
$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); // удаляем недоспустимые символы
Самоучитель по PHP