Обе функции preg_match и preg_match_all в PHP используют Perl-совместимые регулярные выражения.
Вы можете посмотреть эту серию, чтобы полностью понять Perl-совместимые регулярные выражения: https://www.youtube.com/watch?v=GVZOJ1rEnUg&list=PLfdtiltiRHWGRPyPMGuLPWuiWgEI9Kp1w
preg_match ($ pattern, $ subject, & $ match, $ 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, & $ match, $ flags)
Функция preg_match_all
ищет все совпадения в строке и выводит их в многомерный массив ($matches
), упорядоченный в соответствии с $flags
. Когда значение $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"
}
}