Сами регулярные выражения не являются новинкой, превнесенной PHP. В том или ином виде они используются уже достаточно большой срок и являются очень мощным механизмом работы со строковыми данными.
Регулярное выражение представляет из себя некий шаблон, который используется для различных действий в зависимости от функции, использующей это регулярное выражение. Для задания шаблона используются специальные символы. Ниже представлена краткая таблица специальных символов и их значений.
Символы | Значение | |
Символы, указывающие расположение искомого элемента в строке. | ||
^ | Указывает на то, что символы после знака должны находиться в начале строки. | |
$ | Символы до знака должны находиться в конце строки. | |
Escape последовательности. | ||
\. | Шаблону соответствует знак точки в строке. | |
\n | Символ перевода строки. | |
\r | Символ возврата каретки. | |
\t | Символ табуляции. | |
\v | Символ вертикальной табуляции. | |
Задание группы символов. | ||
[ ] | Задают группу символов. Соответствует любому символу из перечисленных в группе. Есть возможность задания диапазона символов с помощью знака - (минус, тире). | |
^ | В группе символов соответствует отрицанию последующих символов, то есть указывает символы, не соответствующие шаблону. | |
. | Соответствует любому символу, кроме перевода строки. | |
Количественные показатели | ||
* | Символ перед знаком не присутствует либо повторяется любое число раз. | |
? | Символ перед знаком встречается ноль или один раз. | |
+ | Предыдующий символ повторяется один или большее число раз. | |
Логическое определение. | ||
| | Эффект подобен оператору || (OR) в логическом выражении. | |
() | Логическая группировка выражений. |
Функции работы с регулярными выражениями:Необходимо сказать, что PHP располагает как собственным механизмом работы с регулярными выражениями (POSIX), так и заимствованным у другого серверного языка программирования Perl. Внешне их легко различить по названиям функций: функции первого типа начинаются с символов "ereg", а второго - "preg". Но названия функций не единственное их отличие. Прежде всего они содержат некоторые различия в синтаксисе регулярных выражений. Так, Perl-подобные функии требуют разделители:
|
|
$str = "регулярное выражение"; // просто строка
$preg = preg_replace("/р.+е/i", "<i>[вырезано]</i>", $str);
$ereg = eregi_replace("р.+е", "<i>[вырезано]</i>", $str);
echo $preg."<br>".$ereg;
Функции | Синтаксис | Описание |
ereg, eregi, preg_match | функция(pattern, string, [regs]) | Ищет в строке string соответствия с регулярным выражением pattern, и сохраняет их в массиве regs (если указано). |
preg_match_all | preg_match_all(pattern, subject, matches, [order]) | Осуществляет глобальное сопоставление с шаблоном, результаты заносит в matches. |
split, spliti, preg_split | функция(pattern, string, [limit]) | Разбивает строку в массив посредством регулярного выражения. |
preg_grep | preg_grep(pattern, input) | Возвращает массив из элементов массива input, соответствующих шаблону pattern. |
|
|