php preg_match为什么它在地球上不起作用?

时间:2013-10-05 20:56:30

标签: php

这对于墙壁情况来说只是如此。这种模式在javascript中完美运行。而且我不知道该怎么做。

$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]*

它工作正常,但直到最后

1 个答案:

答案 0 :(得分:1)

模式没有任何问题,问题是您需要比默认值更大的回溯限制。

<强>解释

在正则表达式问题中,总是使用preg_last error()检查错误。

如果您在自己提交的网站的特定回复中使用它,因为这是一个资源问题,而较小的文字不会引发错误,您会看到获得PREG_BACKTRACK_LIMIT_ERROR

<强>解决方案:

要克服此限制,您可以在脚本开头添加以下内容:

ini_set ('pcre.backtrack_limit', 10000000);