Регулярные выражений в 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"
Если вам нужно добавить участок кода ставьте его между тегами <code></code>