preg_match_all
preg_quote
PCRE
PHP Manual

# preg_match

(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);
> ?>`

> Результат выполнения данного примера:

>       Array
>       (
>       )

> В то время как этот пример

> `<?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(), поскольку они выполнят эту задачу гораздо быстрее.

Пример #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";
?>`

Результат работы примера:

    domain name is: php.net

Смотрите также preg_match_all(), preg_replace(), и preg_split().

preg_match_all
preg_quote
PCRE
PHP Manual