Найти в Дзене

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

Оглавление

Регулярные выражения это форма "поискового шаблона". Например вам надо найти в документе знак, или набор знаков. Например $ :))

Это может понадобиться при работе интернет форм в интернет-магазине. Там часто используются файлы xml формата. Вот. К примеру вам надо найти быстро, есть ли на складе товар, который ищет клиент. Ну это так, простейший пример.

Итак, давайте познакомимся с обработкой выражений подробнее.

Синтаксис

"Выражение" представляется в виде строки с разделителями. Примерно так:

$exp = "/хлеб/i";

Здесь "хлеб" это разыскиваемый шаблон, i - модификатор, наличие которого говорит о том, что поиск чувствителен к регистру знаков. Разделитель может быть любым знаком кроме числа, буквы, пробела, косой черты с наклоном влево. Например это может быть *.

Функции для работы с выражениями

Вообще-то таких функций множество. Вот самые популярные:

preg_match() - возвращает 1, если шаблон найден в тексте;
preg_match_all() - возвращает число совпадений с разыскиваемым шаблоном. Может вернуть 0;
preg_replace() - возвращает строку, в которой исходный шаблон частично или полностью изменен новыми знаками (словами то есть).

А теперь примеры кода для этих функций (для тренировки).

Функция preg_match()

<?php
$str = "мир";
$pattern = "/р/i";
echo preg_match($pattern, $str); // Печатает 1
?>

Функция preg_match_all()

<?php
$str = "Осенью идут дожди.";
$pattern = "/д/i";
echo preg_match_all($pattern, $str); // Выводит значение 3
?>

Функция preg_replace()

<?php
$str = "Денег нет!";
$pattern = "/нет/i";
echo preg_replace($pattern, "есть", $str); // Выводит "Денег есть!" (если бы все было так просто) 🎃
?>

Модификаторы поиска выражений

Что такое модификатор упоминалось выше :)). Теперь подробнее.

i - выполняет поиск чувствительный к регистру;
m - полилинейный поиск. То есть при поиске будет учитываться, в начале или в конце строки случилось совпадение;
u - выполняется поиск правильных совпадений если страница закодирована в UTF-8.

Применение скобок для удобного поиска

Задачу поиска можно сильно упростить, если "выражение" достаточно сложное. Для этого применяются скобки. Да, обычные скобки. Например:

[abc] - найдет один знак из выражения в скобках. Если вы вдруг не уверены, что надо искать;

[^abc] - найдет знаки, кроме тех которые внутри скобок;

[0-9] - найти число.

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

Группировка "выражений"

Вы можете использовать круглые скобки () чтобы не писать повторяющиеся элементы шаблона. Например:

<?php
$str = "Половина банана.";
$pattern = "/ба(на){2}/i";
echo preg_match($pattern, $str); // Выведет 1
?>

Напутствие :))

Надеюсь это будет как-то и где-то полезным. Рискну предположить, что такой сайт как Яндекс использует "выражения", так как здесь используют xml файлы. И если вы вдруг захотите устроить интернет магазин, то понимание этих вещей сильно облегчит вам жизнь.

И напоследок, просто перейдите по ссылке : Блог программиста и дизайнера. Просто перейдите, больше ничего. Поддержите мой труд :)) Это так просто. Спасибо!

Пишите в комментариях, что вас интересует и если есть вопросы.