我试图找出一个字符串使用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
返回呢?
离开了括号,或添加一些括号,阅读手册,你会解决它 – 2014-10-28 11:01:03
请定义*错*。这不符合你的期望http://php.net/preg_match_all给出了什么? – hakre 2014-10-28 11:07:25
由于您没有定义错误,因此您可能会在这里混淆var_dump的输出? – hakre 2014-10-28 11:14:38