PHP Регулярные выражения
Что такое Регулярные выражения?
Регулярное выражение - это последовательность символов, образующая шаблон поиска. Когда вы ищете данные в тексте, вы можете использовать этот шаблон поиска, чтобы описать то, что вы ищете.
Регулярное выражение может быть одиночным символом или более сложным шаблоном.
Регулярные выражения могут использоваться для выполнения всех типов текстового поиска и операций замены текста.
Синтаксис Регулярных выражений в PHP
В PHP регулярные выражения - это строки, состоящие из разделителей, шаблона и необязательных модификаторов.
$exp = "/w3schools/i";
В приведенном выше примере /
- это разделитель, w3schools - это шаблон , который выполняет поиск и i
- это модификатор, который делает поиск нечувствительным к регистру.
В качестве разделителя может использоваться любой символ, кроме буквы, числа, обратного слэша или пробела. Наиболее распространенным разделителем является слэш (/), но когда ваш шаблон содержит слэши, лучше выбрать другие разделители, такие как # или ~.
Функции регулярных выражений
PHP предоставляет множество функций, позволяющих использовать регулярные выражения. Функции preg_match()
, preg_match_all()
и preg_replace()
- одни из наиболее часто используемых функций:
Функция | Описание |
---|---|
preg_match() | Возвращает 1, если шаблон был найден в строке, и 0, если нет |
preg_match_all() | Возвращает, сколько раз шаблон был найден в строке, которое также может быть 0 |
preg_replace() | Возвращает новую строку, в которой совпадающие шаблоны были заменены другой строкой |
Использование preg_match()
Функция preg_match()
сообщит вам, содержит ли строка совпадения с шаблоном.
Пример
Используйте регулярное выражение для поиска "w3schools" в строке без учета регистра:
<?php
$str = "Visit W3Schools";
$pattern = "/w3schools/i";
echo
preg_match($pattern, $str); // Выведет 1
?>
Попробуйте сами »
Использование preg_match_all()
Функция preg_match_all()
сообщит вам, сколько совпадений было найдено для шаблона в строке.
Пример
Используйте регулярное выражение для подсчета без учета регистра числа вхождений "ain" в строке:
<?php
$str = "The rain in SPAIN falls mainly on the plains.";
$pattern = "/ain/i";
echo preg_match_all($pattern, $str); // Выведет 4
?>
Попробуйте сами »
Использование preg_replace()
Функция preg_replace()
заменит все совпадения шаблона в строке другой строкой.
Пример
Используйте регулярное выражение без учета регистра, чтобы заменить Microsoft на W3Schools в строке:
<?php
$str = "Visit Microsoft!";
$pattern = "/microsoft/i";
echo
preg_replace($pattern, "W3Schools", $str); // Выведет "Visit
W3Schools!"
?>
Попробуйте сами »
Модификаторы регулярных выражений
Модификаторы могут изменить способ выполнения поиска.
Модификатор | Описание |
---|---|
i | Выполняет поиск без учета регистра |
m | Выполняет многострочный поиск (шаблоны, которые ищут начало или конец строки, будут соответствовать началу или концу каждой строки) |
u | Обеспечивает правильное сопоставление шаблонов в кодировке UTF-8 |
Шаблоны регулярных выражений
Скобки используются для поиска ряда символов:
Выражение | Описание |
---|---|
[abc] | Найдите один символ из вариантов в скобках |
[^abc] | Найдите любой символ НЕ в скобках |
[0-9] | Найдите один символ из диапазона от 0 до 9 |
Метасимволы
Метасимволы - это символы со специальным значением:
Метасимволы | Описание |
---|---|
| | Найдите совпадение для любого из шаблонов, разделенных | как: cat|dog|fish |
. | Найдите только один экземпляр любого символа |
^ | Находит совпадение в начале строки, как в: ^Hello |
$ | Находит совпадение в конце строки, как в: World$ |
\d | Находит цифру |
\s | Находит символ пробела |
\b | Находит совпадение в начале такого слова: \bWORD или в конце такого слова: WORD\b |
\uxxxx | Находит символ Юникода, указанный шестнадцатеричным числом xxxx |
Квантификаторы (кванторы)
Квантификаторы определяют количества:
Квантификатор | Описание |
---|---|
n+ | Соответствует любой строке, содержащей хотя бы один n |
n* | Соответствует любой строке, содержащей ноль или более вхождений n |
n? | Соответствует любой строке, содержащей ноль или одно вхождение n |
n{x} | Соответствует любой строке, содержащей последовательность X n's |
n{x,y} | Соответствует любой строке, содержащей последовательность от X до Y n's |
n{x,} | Соответствует любой строке, содержащей последовательность не менее X n's |
Примечание: Если в вашем выражении требуется поиск одного из специальных символов, вы можете использовать обратный слэш (\), чтобы избежать их. Например, для поиска одного или нескольких вопросительных знаков вы можете использовать следующее выражение: $pattern = '/\?+/';
Группировка
Вы можете использовать круглые скобки ()
для применения квантификаторов ко всем шаблонам. Их также можно использовать для выбора частей рисунка, которые будут использоваться в качестве совпадения.
Пример
Используйте группировку для поиска слова "banana", ища ba за которым следуют два экземпляра na:
<?php
$str = "Apples and bananas.";
$pattern = "/ba(na){2}/i";
echo
preg_match($pattern, $str); // выведет 1
?>
Попробуйте сами »
Полный справочник регулярных выражений
Для получение более полной информации посетите Полный справочник регулярных выражений PHP на нашем сайте W3Schools на русском.
Справочник содержит описания и примеры всех функций регулярных выражений.