Вы можете выполнить цикл до тех пор, пока найдете space comment
, а затем удалить его с помощью str_replace.
Когда цикл будет завершен, просто удалите <!--
детали.
while(strpos($str, ' <!--{hello}-->') !== false){
$str = str_replace(" <!--{hello}-->", "<!--{hello}-->",$str);
$str = str_replace(" <!--{/hello}-->", "<!--{/hello}-->",$str);
}
$str = str_replace(["<!--{hello}-->", "<!--{/hello}-->"], ["{hello}", "{/hello}"],$str);
echo $str;
https://3v4l.org/9oGWu
Пример ввода:
<!--{hello}-->
<div class="novalue">
<a>URL</a>
</div>
<!--{/hello}-->
<!--{hello}-->
<div class="novalue">
<a>URL</a>
</div>
<!--{/hello}-->
<!--{hello}-->
<div class="novalue">
<a>URL</a>
</div>
<!--{/hello}-->
Возвращает:
{hello}
<div class="novalue">
<a>URL</a>
</div>
{/hello}
{hello}
<div class="novalue">
<a>URL</a>
</div>
{/hello}
{hello}
<div class="novalue">
<a>URL</a>
</div>
{/hello}