奇怪的问题。。。
我有这个文档,当我复制文本并将其放置在脚本中(作为字符串变量)时,正则表达式匹配成功。但是,当我使用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。?也有这个值,所以它不仅仅是一些非常大的数字。