2013-06-26 46 views
1

我希望你能帮助我。我对这个问题感到十分困惑。不知何故,我的preg_match_all不会返回任何东西。它应该返回一个错误或一个整数,但它不会。 Error_reporting是开启的,所有的东西,我都想不出任何与此有关的东西。preg_match_all不返回任何东西

echo $string = '234,2345,34534,223'.'<br>'; 
echo preg_match_all('/,[0-9][0-9]/', $string).'<br>'; 

你可以看到$ string,但第二个回声没有做任何事情。我想你会需要更多的信息,但我只是不知道这个问题所在。

编辑: 运行PHP 4.3

+0

您正在将目标字符串初始化为'$ string',但将其用作'$ test';错字? – orique

+1

修正了!没有在我的代码中输入错字;) –

回答

1

preg_match_all返回匹配的数目中发现,或FALSE。你想传入第三个参数,一个被引用的数组,以及如果你想看结果的话。

echo $string = '234,2345,34534,223'.'<br>'; 
preg_match_all('/,[0-9][0-9]/', $string, $matches); 
print_r($matches); 

(另外,你使用$string然后$test但我认为这只是在问题的拼写错误。)

0

您需要提供第三个参数作为捕捉数组中preg_match_all和首先检查它的返回值。像这样使用它:

if (preg_match_all('/,\d{2}/', $test, $match)) { 
    print_r($match); 
} 
+0

在原始代码中,我使用$ test而不是$ string。我在我的评论中将其更改为$ string,但忘记替换第二个$ test,这是我的错误。 添加$匹配的窍门。我不知道使用可选的$ matches参数时,preg_match_all仅返回一个值。它没有明确地在PHP手册中这么说... 感谢您的快速帮助! :) –

+0

你非常欢迎,很高兴它为你工作。 – anubhava

+0

如果此答案帮助您解决问题,请考虑将其标记为“已接受”,以便将来遇到类似问题的用户将能够轻松地看到它。 – anubhava