|
(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.htm.net/index.htm", $matches);
$host = $matches[2];
// получить два последних сегмента имени хоста
preg_match("/[^\.\/]+\.[^\.\/]+$/",$host,$matches);
echo "domain name is: ".$matches[0]."\n"; |
Это пример выведет:
|
См. также preg_match_all(),
preg_replace() и preg_split(). | |