На странице HTML я удаляю комментарии HTML вот так
$contentHTML = preg_replace("#(?=<!--)([\s\S]*?)-->#", "", $contentHTML);
Но на огромной странице для preg_replace
, Я получил «Неустранимая ошибка PHP: допустимый объем памяти …«
Возможно, одно из решений будет использовать несоответствующую группу, чтобы избежать захвата текста?
Может ли кто-нибудь объяснить, как использовать группу соответствия ?:
Или как я могу подавить комментарии HTML на огромной странице без preg_replace
?
Просто разверните регулярное выражение как
$contentHTML = preg_replace("#<!--[^-]*(?:-(?!->)[^-]*)*-->#", "", $contentHTML);
Увидеть regex demo. Comapre с ваш делая примерно в 3 раза больше шагов, чем мой, с очень коротким примером.
Подробности:
<!--
— начало комментария[^-]*
— 0+ не-
(?:-(?!->)[^-]*)*
— 0+ последовательностей -
это не сопровождается ->
а затем 0+ не-
s -->
— конец комментарияДругих решений пока нет …