PHP preg_match和preg_match_all函数

时间:2010-11-03 15:44:35

标签: php preg-match preg-match-all

我想知道preg_matchpreg_match_all函数的作用以及如何使用它们。

4 个答案:

答案 0 :(得分:97)

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

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

答案 1 :(得分:10)

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,&amp; $ 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"
  }
}

答案 2 :(得分:4)

一个具体的例子:

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 :(得分:-12)

PHP手册可以帮助您。

如果您无法理解,请告诉我们。