PHP. Руководство по PHP. 2005
preg_match
preg_match
(PHP 3 >= 3.0.9, PHP 4, PHP 5)preg_match -- Выполняет проверку на соответствие регулярному выражению
Описание
mixed preg_match (string pattern, string subject [, array &matches [, int flags [, int offset]]])Ищет в заданном тексте subject совпадения
с шаблоном pattern
В случае, если дополнительный параметр matches указан,
он будет заполнен результатами поиска. Элемент $matches[0] будет содержать
часть строки, соответствующую вхождению всего шаблона, $matches[1] - часть строки,
соответствующую первой подмаске, и так далее.
flags может принимать следующие значения:
- В случае, если этот флаг указан, для каждой найденной подстроки будет указана
ее позиция в исходной строке. Необходимо помнить, что этот флаг меняет
формат возвращаемых данных: каждое вхождение возвращается в виде массива,
в нулевом элементе которого содержится найденная подстрока, а в первом - смещение.
Данный флаг доступен в PHP 4.3.0 и выше.
Дополнительный параметр flags доступен начиная с
PHP 4.3.0.
Поиск осуществляется слева направо, с начала строки. Дополнительный параметр
offset может быть использован для указания альтернативной
начальной позиции для поиска. Дополнительный параметр
offset доступен начиная с PHP 4.3.3.
Замечание:
Использование параметра offset не эквивалентно
замене сопоставляемой строки выражением substr($subject, $offset)
при вызове функции preg_match_all(), поскольку
шаблон pattern может содержать такие условия как
^, $ или (?<=x).
Сравните:
<?php
$subject = "abcdef";
$pattern = '/^def/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE, 3);
print_r($matches);
?>
Результат выполнения данного примера: (
) В то время как этот пример
<?php
$subject = "abcdef";
$pattern = '/^def/';
preg_match($pattern, substr($subject,3), $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
?>
выведет следующее:
(
[0] => Array
(
[0] => def
[1] => 0
)
)
Array
Array
Функция preg_match() возвращает количество найденных соответствий.
Это может быть 0 (совпадения не найдены) и 1, поскольку preg_match() прекращает
свою работу после первого найденного совпадения. Если необходимо найти либо сосчитать все совпадения,
следует воспользоваться функцией preg_match_all().
Функция preg_match() возвращает FALSE в случае, если во время выполнения возникли какие-либо ошибки.
Подсказка:
Не используйте функцию preg_match(), если необходимо проверить наличие подстроки в заданной строке.
Используйте для этого strpos() либо strstr(), поскольку они
выполнят эту задачу гораздо быстрее.
Пример 3. Извлечение доменного имени из URL
Результат работы примера:
|
Смотрите также preg_match_all(),
preg_match_all
preg_quote