preg_match
(PHP 4, PHP 5) preg_match — Выполняет проверку на соответствие регулярному выражению
Описание
mixed preg_match
( string $pattern
, string $subject
[, array $&matches
[, int $flags
[, int $offset
]]] )
В случае, если дополнительный параметр 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).
Сравните:
Функция preg_match() возвращает количество найденных соответствий.
Это может быть 0 (совпадения не найдены) и 1, поскольку preg_match() прекращает
свою работу после первого найденного совпадения. Если необходимо найти либо сосчитать все совпадения,
следует воспользоваться функцией preg_match_all().
Функция preg_match() возвращает FALSE в случае, если во время выполнения возникли какие-либо ошибки.
Подсказка
Не используйте функцию preg_match(), если необходимо проверить наличие подстроки в заданной строке.
Используйте для этого strpos() либо strstr(), поскольку они
выполнят эту задачу гораздо быстрее.
Пример #1 Поиск подстроки "php" в тексте
<?php // Символ "i" после закрывающего ограничителя шаблона означает // регистронезависимый поиск. if (preg_match("/php/i", "PHP is the web scripting language of choice.")) { echo "Вхождение найдено."; } else { echo "Вхождение не найдено."; } ?>
Пример #2 Поиск слова "web" в тексте
<?php /* Специальная последовательность \b в шаблоне означает границу слова, следовательно, только изолированное вхождение слова 'web' будет соответствовать маске, в отличие от "webbing" или "cobweb". */ if (preg_match("/\bweb\b/i", "PHP is the web scripting language of choice.")) { echo "Вхождение найдено."; } else { echo "Вхождение не найдено."; }
if (preg_match("/\bweb\b/i", "PHP is the website scripting language of choice.")) { echo "Вхождение найдено."; } else { echo "Вхождение не найдено."; } ?>
Пример #3 Извлечение доменного имени из URL
<?php // Извлекаем имя хоста из URL preg_match("/^(http:\/\/)?([^\/]+)/i", "http://www.php.net/index.html", $matches); $host = $matches[2];
// извлекаем две последние части имени хоста preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches); echo "domain name is: {$matches[0]}\n"; ?>
Результат работы примера:
Смотрите также preg_match_all(),
preg_replace(), и
preg_split().
|
|