Я хотел бы знать, что делают функции preg_match
и preg_match_all
и как их использовать.
Функции PHP preg_match и preg_match_all
Ответ 1
preg_match
перестает следить за первым совпадением. preg_match_all
, с другой стороны, продолжает смотреть до завершения обработки всей строки. Как только совпадение найдено, он использует оставшуюся часть строки, чтобы попытаться применить другое соответствие.
Ответ 2
Конкретный пример:
preg_match("/find[ ]*(me)/", "find me find me", $matches):
$matches = Array(
[0] => find me
[1] => me
)
preg_match_all("/find[ ]*(me)/", "find me find me", $matches):
$matches = Array(
[0] => Array
(
[0] => find me
[1] => find me
)
[1] => Array
(
[0] => me
[1] => me
)
)
preg_grep("/find[ ]*(me)/", ["find me find me", "find me findme"]):
$matches = Array
(
[0] => find me find me
[1] => find me findme
)
Ответ 3
Оба preg_match и preg_match_all работают в PHP используйте регулярные выражения, совместимые с Perl.
Вы можете посмотреть эту серию, чтобы полностью понять регулярные выражения, совместимые с Perl: https://www.youtube.com/watch?v=GVZOJ1rEnUg&list=PLfdtiltiRHWGRPyPMGuLPWuiWgEI9Kp1w
preg_match ($ pattern, $subject, & $matches, $flags, $offset)
Функция preg_match
используется для поиска конкретной $pattern
в строке $subject
, и когда шаблон найден в первый раз, он перестает его искать. Он выводит совпадения в $matches
, где $matches[0]
будет содержать текст, который соответствует полному шаблону, $matches[1]
будет иметь текст, который соответствует первому захваченному скобке в скобках и т.д.
Пример preg_match()
<?php
preg_match(
"|<[^>]+>(.*)</[^>]+>|U",
"<b>example: </b><div align=left>this is a test</div>",
$matches
);
var_dump($matches);
Выход:
array(2) {
[0]=>
string(16) "<b>example: </b>"
[1]=>
string(9) "example: "
}
preg_match_all ($ pattern, $subject, & $matches, $flags)
Функция preg_match_all
выполняет поиск всех совпадений в строке и выводит их в многомерном массиве ($matches
), упорядоченном согласно $flags
. Когда значение no $flags
передается, оно упорядочивает результаты так, чтобы $matches[0]
был массивом совпадений полного шаблона, $matches[1]
представляет собой массив строк, совпадающих с первым скоблением в скобках и т.д.
Пример preg_match_all()
<?php
preg_match_all(
"|<[^>]+>(.*)</[^>]+>|U",
"<b>example: </b><div align=left>this is a test</div>",
$matches
);
var_dump($matches);
Выход:
array(2) {
[0]=>
array(2) {
[0]=>
string(16) "<b>example: </b>"
[1]=>
string(36) "<div align=left>this is a test</div>"
}
[1]=>
array(2) {
[0]=>
string(9) "example: "
[1]=>
string(14) "this is a test"
}
}
Ответ 4
Руководство по PHP может вам помочь.
Сообщите нам, если у вас возникли проблемы с пониманием.