Вы не зарегистрированы? Нажмите здесь для регистрации.
Забыли пароль? Запросите новый здесь.
|
Вы должны авторизироваться, чтобы добавить сообщение.
|
|
|
Последние активные темы форума |
|
preg_match
(PHP 3>= 3.0.9, 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).
Сравните:
Функция 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
"
;
?>
|
Результат работы примера:
|
Смотрите также preg_match_all(),
preg_replace(), и
preg_split().
|
· Гостей: 22
· Пользователей: 0
· Всего пользователей: 453
· Новый пользователь: ZDA
|
|