preg_split("/({{\s*(?:(?!}}).)+\s*}})/s", file_get_contents('data.txt'));
Эта строка заставляет Apache сбросить соединение. data.txt
составляет примерно 12 КБ.
Что я делаю не так, могу ли я как-нибудь оптимизировать регулярное выражение?
preg_split("/({{\s*(?:(?!}}).)+\s*}})/s", file_get_contents('data.txt'));
Эта строка заставляет Apache сбросить соединение. data.txt
составляет примерно 12 КБ.
Что я делаю не так, могу ли я как-нибудь оптимизировать регулярное выражение?
Вместо этого попробуйте это регулярное выражение:
/({{(?>(?:[^}]|}[^}])+)}})/s
Основные улучшения:
(?>…)
- атомарная группировка во избежание возврата(?:[^}]|}[^}])+
- без оглядки, без не жадного сопоставленияПопробуйте прочитать файл в переменной, а не передавать его в preg_split. Думаю, это file_get_contentsproblem rather than
preg_split`.