top

Описание функции preg-match



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() .
corner
My pencil ;)
Главная     Сервисы     Портфолио     Проги     Видео     Контакты     Ссылки     Текст