Руководство по языку программирования PHP
 

PCRE
 

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

preg_match()

Синтаксис:

preg_match(pattern, string_name[,matches[, flags[, offset]]])


Поддерживается следующими версиями PHP:

3.0.9
4
5
+
+
+

Описание функции:

Функция 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);

?>

Array ( [0] => Array ( [0] => P5 [1] => 2 ) ) int(1) 1 "Ничего"


3. Выберите верный вариант ответа.


$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 ) ) int(1) 1 "Ничего"


 

 

PCRE функции

preg_grep()
preg_filter()
preg_last_error()
preg_match()
preg_match_all()
preg_quote()
preg_replace()
preg_replace_callback()
preg_split()