Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
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). Сравните:
$subject = "abcdef"; $pattern = '/^def/'; preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE, 3); print_r($matches);
Результат выполнения данного примера:
Array ( )В то время как этот пример
$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:
Пример 1. Поиск подстроки "php" в тексте
// Символ "i" после закрывающего ограничителя шаблона означает
// регистронезависимый поиск.
if (preg_match("/php/i", "PHP is the web scripting language of choice.")) {
echo "Вхождение найдено.";
} else {
echo "Вхождение не найдено.";
}
Пример 2. Поиск слова "web" в тексте
/*
Специальная последовательность \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
// Извлекаем имя хоста из URL
preg_match("/^(http:\/\/)?([^\/]+)/i",
"http://www.htmlweb.ru/index.html", $matches);
$host = $matches[2];
// извлекаем две последние части имени хоста
preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches);
echo "domain name is: {$matches[0]}\n";
Результат работы примера:
domain name is: htmlweb.ru
Смотрите также preg_match_all(), preg_replace(), preg_split(), регулярные выражения на PHP, примеры использования регулярных выражений на php.
Регулярные выражения в PHP.Примеры регулярных выражения в PHP.
Все функции регулярные выражения
Описание на ru2.php.net
Описание на php.ru