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).
Сравните:
Функция 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"; ?>