php – 为什么preg_match_all返回两个匹配项?
作者:互联网
我试图识别一个字符串是否在使用preg_match_all的双引号之间有任何单词,但它是重复结果,并且第一个结果有两组双引号,其中被搜索的字符串只有一组.
这是我的代码:
$str = 'Test start. "Test match this". Test end.';
$groups = array();
preg_match_all('/"([^"]+)"/', $str, $groups);
var_dump($groups);
var转储产生:
array(2) {
[0]=>
array(1) {
[0]=>
string(17) ""Test match this""
}
[1]=>
array(1) {
[0]=>
string(15) "Test match this"
}
}
正如你所看到的第一个数组是错误的,为什么preg_match_all会返回这个?
解决方法:
嗨,如果您使用的是print_r而不是vardump,您将会以更好的方式看到差异.
Array
(
[0] => Array
(
[0] => "Test match this"
)
[1] => Array
(
[0] => Test match this
)
)
第一个包含整个字符串,第二个是您的匹配.
标签:php,regex,duplicate-data,preg-match-all 来源: https://codeday.me/bug/20190713/1453981.html