【发布时间】:2014-12-23 18:03:07
【问题描述】:
我正在尝试使用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 会返回这个?
【问题讨论】:
-
省略括号,或添加一些括号,阅读手册,您会解决的
-
请定义错误。这与php.net/preg_match_all 给出的期望有何不符?
-
你没有定义错,也可能是你把
var_dump的输出弄混了? -
是的,我很困惑
var_dump。我没有意识到preg_match_all记录了有和没有捕获,并且它是var_dump在字符串周围添加引号。这两个双引号是我认为是错误的。
标签: php regex preg-match-all duplicate-data