$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://yugioh.wikia.com/wiki/List_of_Yu-Gi-Oh!_BAM_cards');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$chHtml = curl_exec($ch);
curl_close($ch);
$patt = '/<table class="wikitable sortable card-list">[\s\S]*?<\/table/im'; //////////////this
preg_match($patt, $chHtml, $matches);
是问题行
如果我贪得无厌
[\s\S]*
它工作正常,但直到最后
答案 0 :(得分:1)
模式没有任何问题,问题是您需要比默认值更大的回溯限制。
<强>解释强>
在正则表达式问题中,总是使用preg_last error()
检查错误。
如果您在自己提交的网站的特定回复中使用它,因为这是一个资源问题,而较小的文字不会引发错误,您会看到获得PREG_BACKTRACK_LIMIT_ERROR
。
<强>解决方案:强>
要克服此限制,您可以在脚本开头添加以下内容:
ini_set ('pcre.backtrack_limit', 10000000);