代码之家  ›  专栏  ›  技术社区  ›  datasn.io

PHP preg_match_在长字符串上全部失败

php
  •  3
  • datasn.io  · 技术社区  · 15 年前

    这是我的代码:

    $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 回复  |  直到 15 年前
        1
  •  5
  •   Phil    15 年前

    您可能需要增加PCRE限制。

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

    编辑:但是是的,正如蒂夫马斯特所说,不要这样做。

    推荐文章