PHP preg_match 在字符串中的特定字符数处停止响应

PHP preg_match stops responding at certain number of characters in string

是否有某种 PHP 配置设置会影响传递到 preg_match 或 preg_match_all 的字符串的长度?

我正在尝试测试以下内容以找出问题所在:

    $re = "/\[\[section\:(.*?)\]\]((.|\n)*?)\[\[endsection\]\]/"; 
    $str = "[[section:body]]
    lots of lines here
    lots of lines here
    lots of lines here
    lots of lines here
    lots of lines here
    lots of lines here
    lots of lines here
    lots of lines here
    lots of lines here
    lots of lines here
    lots of lines here
    lots of lines here
    lots of lines here
    lots of lines here
    lots of lines here
    lots of lines here
    lots of lines here
    lots of lines here
    lots of lines here
    lots of lines here
    lots of lines here
    lots of lines here
    [[endsection]]

    other stuff here"; 

    preg_match_all($re, $str, $matches);
    var_dump($matches);

现在,如果我 运行 没问题,returns 几乎可以立即得到结果。

但是如果我再向 $str 变量添加一行并再次 运行 它,它只会旋转和旋转然后我无法显示网页。

但是如果我然后 运行 在 writecodeonline 上完全相同的东西。com/php 它工作正常并且 returns 立即。

我的 php 错误日志或我的 apache 错误日志中没有收到任何错误,它只是在遇到特定字符后拒绝执行任何操作(似乎是在遇到某些字符时707 个字符停止响应。

有没有人遇到过这种问题?这只是我需要更改的一些配置设置吗?

干杯。

是的,有the backtrack-limit

您可以在 php.ini 文件中进行配置。

老实说,快速 google search 就可以解决您的问题...