Учебник РНР
Назад Вперёд

preg_match

(PHP 3>= 3.0.9, PHP 4)

preg_match - выполняет подстановку регулярного выражения.

Описание

int preg_match (string pattern, string subject [, array matches [, int flags]])

Ищет в subject совпадения с регулярным выражением, заданным в pattern .

Если matches предоставлен, он заполняется результатами поиска. $matches[0] будет содержать текст, совпавший со всем патэрном, $matches[1] будет содержать текст, совпавший первым захваченным субпатэрном в скобках, и так далее.

flags это:

PREG_OFFSET_CAPTURE

Если этот флаг установлен, для каждого найденного совпадения будет возвращаться сопутствующее строковое смещение. Заметьте, что это изменяет return-значение в массиве, где каждый элемент является массивом, состоящим из совпавшей строки и в смещении 0 и её строковым смещением в subject в смещении 1. Этот флаг доступен, начиная с PHP 4.3.0.

Параметр flags доступен, начиная с PHP 4.3.0.

preg_match() возвращает количество совпадений pattern . Это будет либо 0 раз (нет совпадений), либо 1 раз, поскольку preg_match() остановит поиск после первого найденного совпадения. preg_match_all() , наоборот, продолжит поиск до достижения конца subject . preg_match() возвращает FALSE при возникновении ошибки.

Пример 1. Найти строку текста "php"
// "i" после ограничителя патэрна означает поиск без учёта регистра символов if (preg_match ("/php/i", "PHP is the web scripting language of choice.")) { print "A match was found."; } else { print "A match was not found."; }
Пример 2. Найти слово "web"
// \b в патэрне указывает на границу слова, поэтому совпадёт только отдельное слово // "web", а не часть слов, как "webbing" или "cobweb" if (preg_match ("/\bweb\b/i", "PHP is the web scripting language of choice.")) { print "A match was found."; } else { print "A match was not found."; } if (preg_match ("/\bweb\b/i", "PHP is the website scripting language of choice.")) { print "A match was found."; } else { print "A match was not found."; }
Пример 3. Получение имени домена из URL
// получить имя хоста из 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