Regex不匹配?对问题进行编码


Regex not matching? Encoding the issue?

奇怪的问题。。。

我有这个文档,当我复制文本并将其放置在脚本中(作为字符串变量)时,正则表达式匹配成功。但是,当我使用file_get_contents(从互联网)获取文档时,它不会。

这和编码有关吗?该文档为ISO-8859-1,但通过utf8_encode 转换为utf8

请注意,字符串变量是从这个utf8编码的输出中创建的。

这也是一个简单的正则表达式:

if (preg_match_all('/<h3 align=center><A NAME="([^"]*)"><'/A>(.*)<'/h3>(.*)::break::/isUu', $contents, $matches, PREG_SET_ORDER)) {

有什么想法吗?

这不是由于编码,而是由于达到了回溯限制。

用以下内容覆盖设置:

 ini_set('pcre.backtrack_limit', '1000000');

(高于100000)解决了这个问题。PHP 5.3。?也有这个值,所以它不仅仅是一些非常大的数字。