У меня проблема с моим утверждением preg_match_all. Он работал отлично, так как я печатал статью, но внезапно после того, как она прошла, определенная длина перестала работать все вместе. Это известная проблема с функцией, которая просто не выполняет ничего после стольких символов?
$number = preg_match_all("/(<!-- ([\w]+):start -->)\n?(.*?)\n?(<!-- \\2:stop -->)/s", $data, $matches, PREG_SET_ORDER);
Все это время он работал нормально и отлично работает на других страницах, но как только эта статья прошла определенную длину, фу, она перестала работать для этой статьи. Есть ли другое решение, которое я могу использовать, чтобы заставить его работать с более длинными блоками текста? Длина обрабатываемой статьи - около 33 000 символов (включая пробелы).
Я задавал такой вопрос раньше, но получил только один ответ, который я никогда не проверял. В прошлый раз я только что нашел другой способ обойти это для этого конкретного сценария, но на этот раз нет способа обойти это, потому что это всего одна статья. Я попытался изменить pcre.backtrack_limit
и pcre.recursion_limit
до даже 500 000 без какого-либо эффекта. Есть ли другие идеи о том, почему это происходит, и что я могу сделать, чтобы заставить его продолжать работать даже для этих массивных блоков текста? Предел в 30000 символов, кажется, немного низок, это всего лишь 5000-6000 слов (это около 5700 слов). Разбить его на части не очень удобно, потому что он не найдет начало и конец, если они находятся в двух отдельных блоках текста.