Функция preg_match проверяет есть ли в строке совпадения с регулярным выражением. Функция возвращает три возможных значения: 0 - если совпадений не найдено, 1 - если соdпадение найдено (после нахождения первого совпадения работа функции прекращается), false - если произошла ошибка.
Аргумент
Описание
Тип
pattern
Обязательный аргумент. Регулярное выражение (шаблон поиска)
string
string_name
Обязательный аргумент. Строка, сравниваемая с регулярным выражением.
string
matches
Необязательный аргумент. Если совпадение есть, то массив $matches будет заполнен значениями. В $matches[0] будут помещена часть строки полностью соответствующая шаблону, $matches[1] будет содержать текст соответствующей первой маске, $matches[2] текст второй маски и так далее.
array
flags
Необязательный аргумент. Данный аргумент может содержать только одно значение PREG_OFFSET_CAPTURE.
Если этот флаг указан, то в массиве matches будет возвращен массив массивов, где под индексом "0" в первом вложенном массиве будет находиться совпавшая строка, а под индексом "1" ее смещение от начала строки.
offset
Необязательный аргумент. Аргумент offset указывает позицию в байтах с которой необходимо начать поиск.
int
Регулярные выражения
Отдельно следует остановится на регулярных выражениях, без представления о которых довольно трудно (если вообще возможно) разобраться с работой функции preg_match().
Достаточно хорошо описание регулярных выражений приводится на wikipedia.org, основные моменты применения регулярных выражений также описаны здесь.
Примеры:
Пример 1:
В этом примере проверяется есть ли в строковом выражении символ "P" и следом идущая за этим символом цифра.
$arr_str = preg_match("/P[0-9]/", "PHP5 is a useful language");
print ($arr_str); ?>
Результат:
1
Пример 2:
$arr_str = preg_match("/P[0-9]/", "PHP5 is a useful language", $match_arr);
print_r ($match_arr); ?>
Результат:
Array ( [0] => P5 )
Пример 3:
В этом примере показано использование флага PREG_OFFSET_CAPTURE
$arr_str = preg_match("/P[0-9]/", "PHP5 is a useful language", $match_arr, PREG_OFFSET_CAPTURE);
print_r ($match_arr); ?>
Результат:
Array ( [0] => Array ( [0] => P5 [1] => 2 ) )
Пример 4:
В этом примере используем аргумент offset
$arr_str = preg_match("/P[0-9]/", "PHP5 is a useful language", $match_arr, PREG_OFFSET_CAPTURE,1);
print_r ($match_arr); ?>
Результат:
Array ( [0] => Array ( [0] => P5 [1] => 2 ) )
если начать поиск с 4 позиции, то будет возвращен пустой массив
$arr_str = preg_match("/P[0-9]/", "PHP5 is a useful language", $match_arr, PREG_OFFSET_CAPTURE,4);
print_r ($match_arr); ?>
Результат:
Array ( )
Тест на знание функции preg_match()
1. Выберите верный вариант ответа.
$arr_str = preg_match("/P[0-9]", "PHP5 is a useful language");
var_dump ($arr_str); ?>
int(0) int(1) bool(false)
2. Выберите верный вариант ответа.
$arr_str = preg_match("/P[0-9]/", "PHP5 is a useful language", $match_arr, PREG_OFFSET_CAPTURE,1);
print_r ($arr_str); ?>