PHP 的 preg_match() 和 preg_match_all() 函数

2022-08-30 10:21:15

preg_match()preg_match_all() 函数有什么作用,我该如何使用它们?


答案 1

preg_match停止照顾第一场比赛。另一方面,继续查看,直到它完成对整个字符串的处理。找到匹配项后,它将使用字符串的其余部分尝试应用另一个匹配项。preg_match_all

http://php.net/manual/en/function.preg-match-all.php


答案 2

PHP 中的preg_matchpreg_match_all函数都使用与 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$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"
  }
}

推荐