От автора: приехали на дачу. А до этого жена обещала борщом меня накормить. Всю дорогу нахваливала его! Я вкалывал, как следует: огород заборонил, мусор сгреб. Ну, вроде на обед заработал! А жена, оказывается, судочки с борщом и другими блюдами дома забыла. Хорошо, что я захватил с собой ноутбук. И чтобы отвлечься от голода, решил написать очередную статью. Сегодня расскажу о функции PHP preg match регулярные выражения без которой бессмысленны. Прямо, как моя работа на даче :).
Немного утрирую
Понятно, что на этой функции мир клином не сошелся. Но все-таки она является одним из основных средств для работы с регулярками в PHP. Давайте познакомимся с preg_match() поближе.
Эта функция проверят, присутствуют ли в заданной строке соответствия, установленные шаблоном регулярного выражения. Наверно, на слух понятно не очень. Поэтому подкрепим теорию простеньким примером в тему, в котором воспользуемся PHP preg match():
1 2 3 4 5 6 7 8 9 |
<?php $str1="Муж остался голодным на даче, потому что жена забыла дома борщ."; if (preg_match("/борщ/i", $str1)) { echo "Борщ найден!"; } else { echo "Борща нема!"; } ?> |
Возвращаемое!
Судя по тому, что функция preg match в PHP примере использовалась для проверки на наличие соответствия, она возвращает 0 или 1. Докажем это утверждение на практике:
1 2 3 4 5 6 |
<?php $str1="Муж остался голодным на даче, потому что жена забыла дома борщ."; echo preg_match("/борщ/i", $str1); ?> |
Мы оказались правы. Исходя из этого, самый первый пример PHP preg match с русскими буквами можно немного модифицировать:
1 2 3 4 5 6 7 8 9 10 |
<?php $str1="Муж остался голодным на даче, потому что жена забыла дома борщ."; if (preg_match("/борщ/i", $str1)==1) { echo "Борщ найден!"; } else { echo "Борща нема!"; } ?> |
Сейчас поясню, в чем тут соль! Единица (true) возвращается функцией в том случае, если во входящей строке найдено совпадение, заданное шаблоном. Если совпадений в строке не найдено, то функция возвратит ноль (false).
С цифрами!
Теперь рассмотрим пример нахождения с помощью PHP preg match цифр в переданной строке.
1 2 3 4 5 6 7 8 9 10 11 |
<?php $str1="Муж остался голодным на даче, потому что жена забыла дома 2 литра борща."; if (preg_match("/2/i", $str1)==1) { echo "2 литра борща найдено!"; } else { echo "Борща нема!"; } ?> |
Обратите внимание на используемый шаблон регулярного выражения: /2/i
Модификатор i в этом примере с буквами можно опустить. Он используется для включения регистронезависимого поиска, но для нахождения цифровых значений он не нужен. Это стоит учитывать, если будете проверять с помощью PHP preg match поля email в регистрационных формах.
Извлечение искомого значения
В preg_match() есть несколько необязательных параметров. Все их я не буду описывать. Остановлюсь только на том, который позволяет вывести искомые значения на экран. Они записываются в массив match, поэтому для их отображения нужно использовать print_r() или при выводе с помощью echo явно указывать индекс элемента. Это может пригодиться вам, если нужно с помощью preg match all вырезать ссылки PHP DLE.
1 2 3 4 5 6 7 8 9 10 11 |
<?php $str1="Муж остался голодным на даче, потому что жена забыла дома 2 литра борща."; preg_match("/борщ/i", $str1, $match); print_r($match); echo "<br />"; echo $match[0]; ?> |
Также не забывайте, что проверить корректность работы PHP preg match можно online с помощью специальных сервисов. Например, вот этот.
Ладно, мне пора. Да и есть хочу сильно. Наверное, заеду на заправку «собаками горячими» закидаюсь! Назло жене, чтоб борщ мой дома не забывала :).