找不到匹配项时preg_match_all()中第三个参数的类型

时间:2015-10-22 13:29:31

标签: php

我在项目中使用preg_match_all()来查找给定字符串中的匹配项。例如:

preg_match_all( $pattern, $subject, $matches, $flags );

如果找到匹配项,$matches参数将是根据$flags排序的多维匹配数组。

如果找不到匹配项,$matches会是什么类型?它仍然是一个数组,虽然是一个空数组,或者它是否是falsenull之类的其他内容?

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

3 个答案:

答案 0 :(得分:1)

您将不会获得一个空数组,而是一个包含一个或多个空数组的数组,具体取决于正则表达式中的捕获组。看到差异:

preg_match_all('/foo/', 'bar', $matches);
print_r($matches);
Array
(
    [0] => Array ( )
)

preg_match_all('/(f)oo/', 'bar', $matches);
print_r($matches);
Array
(
    [0] => Array ( )
    [1] => Array ( )
)

答案 1 :(得分:0)

$ matches将是一个包含空子数组的数组。这是你可以轻松测试自己的东西。

<?php

preg_match_all('/O/', 'foo', $matches);
var_dump($matches);

输出:

array(1) {
  [0]=>
  array(0) {
  }
}

答案 2 :(得分:0)

一个简单的测试会告诉你:

preg_match_all("/[0-9]/", "Hello World", $matches);
var_dump($matches);

array(1) { 
  [0]=> array(0) { 
  } 
}