我在项目中使用preg_match_all()
来查找给定字符串中的匹配项。例如:
preg_match_all( $pattern, $subject, $matches, $flags );
如果找到匹配项,$matches
参数将是根据$flags
排序的多维匹配数组。
如果找不到匹配项,$matches
会是什么类型?它仍然是一个数组,虽然是一个空数组,或者它是否是false
或null
之类的其他内容?
答案 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) {
}
}