正则表达式不匹配?编码问题?

时间:2012-03-12 12:28:07

标签: php regex encoding utf-8

奇怪的问题......

我有这个文档,当我复制文本并将其放在我的脚本中(作为字符串变量)时,正则表达式匹配成功。但是,当我使用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)) {

任何想法可能出错?

1 个答案:

答案 0 :(得分:0)

这不是因为编码,而是由于达到了backtrack_limit。

使用以下内容覆盖设置:

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

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