|
(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";
|
Это пример выведет:
|
См. также
preg_match_all()
,
preg_replace()
и
preg_split()
. |
|