Они будут работать, только если у вас нет 2 комментариев с контентом, например ...
<!--comment--> Im a goner <!--comment-->
Вам нужно ...
//preg_replace('/<!--[^>]*-->/', '', $html); // <- this is incorrect see ridgrunners comments below, you really need ...
preg_replace('/<!--.*?-->/', '', $html);
[^>] соответствует чему угодноно> чтобы не проходить мимо> поиска следующего.Я не проверял регулярное выражение phps, но он претендует на то, чтобы быть регулярным выражением perl, которое по умолчанию «жадное» и будет соответствовать как можно большему количеству.
Но так как вы сопоставляете заполнитель с определенным именем, вам просто нужна вся строка и использоватьstr_replace () вместо этого.
str_replace('<!--my comment goes here-->', $comment, $html);
И вместо того, чтобы заменять заполнители в файле, просто сделайте его php-файлом и запишите переменные.
:)