preg_split("/({{\s*(?:(?!}}).)+\s*}})/s", file_get_contents('data.txt'));
该行使Apache重置连接。 data.txt
约为12 kB。
我做错了什么,我能以某种方式优化正则表达式吗?
答案 0 :(得分:2)
请尝试使用此正则表达式:
/({{(?>(?:[^}]|}[^}])+)}})/s
主要改进:
(?>…)
- atomic grouping以避免回溯(?:[^}]|}[^}])+
- 没有环顾四周,没有非贪婪的匹配答案 1 :(得分:0)
尝试将文件读入变量,而不是将其传递给preg_split。我认为这是file_get_contents problem rather than
preg_split`。