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

Admin PHP, WordPress

Заметка о регулярных выражениях. Зачем они нужны, где используются и как их применять. Иными словами о поиске в PHP.

Регулярные выражения — это набор указателей, которые используются в поиске, для нахождения нужных данных.

Использование регулярных выражений в функциях PHP, замены preg_replace, поиска preg_match.

Например, рассмотрим такую функция:

preg_replace('/(<div[^>]*>)(.*?)(<\/div>)/i', '$1$3', $string);

То что внутри этой функции, все эти на первый взгляд непонятные значения, называется регулярным выражением (PHP RegEx). Они используются для поиска конкретных данных.

Шаблон (символы) поиска берет своё начало с языка Perl.

Регулярные выражения делятся на метасимволы и модификаторы метасимволов.

Метасимволы — определяют группу обычных символов. Модификаторы — помогают понять сколько и какое количество этих символов искать.

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

Значения некоторых метасимволов из примера выше (также они будут встречаться ниже):

^ - начало строки
\ - считать следующий элемент обычным символом (не командой)
. - один произвольный (любой случайный) символ
() - группировка (подмаска)
[ ] - класс символов
$ - конец строки
| - альтернатива (или)

Модификаторы регулярного выражения

* - повторять от 0 до бесконечности
? - искать 1 раз или меньше

Ещё модификаторы, но не используются в текущих примерах:

+ - повторять 1 или большее число раз
{n} - точное количество раз (заменить n цифрой)
{n,5} - по меньшей мере 5 раз
{n,m} - не меньше n, но и не больше m

Любой из вышеперечисленных модификаторов сочетается с модификатором «?». Он необходим для ограничения поиска, потому что по умолчанию все метасимволы повторяются по принципу «жадности» (без ограничения).

Например:

(<.*>) - найдет всю строку со всеми тегами
(<.*?>) - найдет только теги

Дополнительные опции

Кроме модификаторов и метасимволов есть опции (приведены не все):

/i - не имеет значения регистр символов (строчные и заглавные)
/s - делает точки (.) переносом строки и возврата каретки (сдвиг влево).
/U - превращается все количественные метасимволы в "не жадные".

Опции могут сочетаться вместе:

/isU

Шаблоны

Также существуют шаблоны, что-то вроде аналога метасимволов, один из них:

\n - новая строка

На данной странице приведены не все параметры регулярных выражений. Это сделано специально, чтобы не запутать новичка и в то же время дать ему основные инструменты для поиска. В дальнейшем, при желании углубиться в детали, в Интернете можно найти более подробную инструкцию.

Эксперименты

Поэкспериментировать с регулярным выражением можно на этом сайте. Вверху вбиваете регулярное выражение, а снизу данные html в которых ищите. При правильном подборе регулярного выражения будет выделяться нужный вам участок кода.

У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"Регулярные выражений в PHP"