Функции PHP »»» Функции для работы с регулярными выражениями (Perl-совместимые)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 может принимать следующие значения:
- PREG_OFFSET_CAPTURE
В случае, если этот флаг указан, для каждой найденной подстроки будет указана
ее позиция в исходной строке. Необходимо помнить, что этот флаг меняет
формат возвращаемых данных: каждое вхождение возвращается в виде массива,
в нулевом элементе которого содержится найденная подстрока, а в первом - смещение.
Данный флаг доступен в 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); ?>
|
выведет следующее:
Array
(
[0] => Array
(
[0] => def
[1] => 0
)
) |
Функция preg_match() возвращает количество найденных соответствий.
Это может быть 0 (совпадения не найдены) и 1, поскольку preg_match() прекращает
свою работу после первого найденного совпадения. Если необходимо найти либо сосчитать все совпадения,
следует воспользоваться функцией preg_match_all().
Функция preg_match() возвращает FALSE в случае, если во время выполнения возникли какие-либо ошибки.
Подсказка:
Не используйте функцию preg_match(), если необходимо проверить наличие подстроки в заданной строке.
Используйте для этого strpos() либо strstr(), поскольку они
выполнят эту задачу гораздо быстрее.
Смотрите также preg_match_all(),
preg_replace(), и
preg_split().
|