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 开发者_C百科wrong, can I optimize the regex somehow?
Try this regular expression instead:
/({{(?>(?:[^}]|}[^}])+)}})/s
The main improvements:
(?>…)
– atomic grouping to avoid backtracking(?:[^}]|}[^}])+
– no look-around, no non-greedy matching
Try reading the file into a variable than passing it to preg_split. I think it's file_get_contentsproblem rather than
preg_split`.
精彩评论