0
preg_split("/({{\s*(?:(?!}}).)+\s*}})/s", file_get_contents('data.txt'));

该行使 Apache 重置连接。data.txt大约为 12 kB。

我做错了什么,我可以以某种方式优化正则表达式吗?

4

2 回答 2

2

试试这个正则表达式:

/({{(?>(?:[^}]|}[^}])+)}})/s

主要改进:

  • (?>…)-原子分组以避免回溯
  • (?:[^}]|}[^}])+– 没有环视,没有非贪婪匹配
于 2011-01-03T17:33:29.563 回答
0

尝试将文件读入变量而不是将其传递给 preg_split。我认为它是 file_get_contents problem rather thanpreg_split`。

于 2011-01-03T17:35:31.933 回答