preg_split 导致连接重置
preg_split("/({{\s*(?:(?!}}).)+\s*}})/s", file_get_contents('data.txt'));
该行使 Apache 重置连接。 data.txt
大约为 12 kB。
我做错了什么,我可以以某种方式优化正则表达式吗?
preg_split("/({{\s*(?:(?!}}).)+\s*}})/s", file_get_contents('data.txt'));
That line makes Apache reset the connection. data.txt
is approximately 12 kB.
What am I doing wrong, can I optimize the regex somehow?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试使用这个正则表达式:
主要改进:
(?>…)
– 原子分组以避免回溯(?:[^}]|}[^}])+
– 不看-周围,没有非贪婪匹配Try this regular expression instead:
The main improvements:
(?>…)
– atomic grouping to avoid backtracking(?:[^}]|}[^}])+
– no look-around, no non-greedy matching尝试将文件读入变量而不是将其传递给 preg_split。我认为这是 file_get_contents
问题而不是
preg_split`。Try reading the file into a variable than passing it to preg_split. I think it's file_get_contents
problem rather than
preg_split`.