Форумы портала PHP.SU » » Вопросы новичков » preg_replace 502 ошибка

Страниц (1): [1]
 

1. Old Human - 13 Марта, 2017 - 10:00:33 - перейти к сообщению
php 5.2.17
Подскажите, пожалуйста, что вызывает в этой строчке 502 ошибку?
PHP:
скопировать код в буфер обмена
  1. $str_post = preg_replace('/(\[quote(.*?)\]((.|\n)*)\[\/quote\])/si', "[..]\n\n", $str_post);

Ранее такая ошибка не возникала несколько лет в этом скрипте. Видимо, попался какой-то хитрый контент $str_post
2. Мелкий - 13 Марта, 2017 - 10:38:50 - перейти к сообщению
Посмотрите в error-логе веб-сервера.
Много запоминающих блоков, и ни один не используется. Может и в pcre.backtrack_limit упираетесь.

Эквивалент:
PHP:
скопировать код в буфер обмена
  1. $str_post = preg_replace('/\[quote.*?\].*\[\/quote\]/si', "[..]\n\n", $str_post);
3. Old Human - 13 Марта, 2017 - 11:08:34 - перейти к сообщению
Мелкий пишет:
Посмотрите в error-логе веб-сервера

Там все грустно [error] child died with signal 4
4. Мелкий - 13 Марта, 2017 - 12:19:23 - перейти к сообщению
Довольно характерная черта одной старой особенности libpcre, как ненужным использованием запоминающих масок можно обвалить поток в segfault на достаточно длинной строке.
У меня ваша регулярка валится где-то на 10 тыс. символах.

 

Powered by ExBB FM 1.0 RC1