PHP preg_match_all在长字符串上失败

时间:2010-11-15 02:08:32

标签: php

这是我的代码:

$long = str_repeat('a very long string text', 100); // try changing 100 to 5000

$str = <<<STR
<abc>a short string text</abc>
<abc>$long</abc>
STR;

preg_match_all('@<abc>([^<>]+)</abc>@sU', $str, $matched);

print_r($matched);

它完全按预期工作。但是,在将100次重复更改为5000后,请运行

print_r($matched);

您只能获得短字符串出现的结果。

我的问题是如何使用preg_match或preg_match_all来处理大型字符串文本(大到1MB或更大)?

1 个答案:

答案 0 :(得分:4)

您可能需要增加PCRE限制。

http://www.php.net/manual/en/pcre.configuration.php

编辑:但是,正如ThiefMaster所说,不要这样做。