这是我的代码:
$template = preg_replace("\s*/\<\!\-\-\{(.+?)\}\-\-\>/s", "{\\1}", $template);
而且html
我要删除评论的缺口:
<!--{hello}-->
<div class="novalue">
<a>URL</a>
</div>
<!--{/hello}-->
我希望它是这样的:
{hello}
<div class="novalue">
<a>URL</a>
</div>
{/hello}
但是,结果是:
{hello}
<div class="novalue">
<a></a>
</div>{/hello}
我的问题是,为什么不能只删除当前行前面的其他空间?
\s
包括换行符,您想改用\h
水平空格,并且不要在正则表达式中转义所有字符,它变得不可读:
$html = <<<EOD
<!--{hello}-->
<div class="novalue">
<a>URL</a>
</div>
<!--{/hello}-->
EOD;
echo preg_replace('#\h*<!--({.+?})-->#', '$1', $html);
输出:
{hello}
<div class="novalue">
<a>URL</a>
</div>
{/hello}
说明:
# # regex delimiter
\h* # 0 or more horizontal spaces
<!-- # literally, begin comment
( # start group 1
{ # opening curly brace
.+? # 1 or more any character, not greedy
} # closing curly brace
) # end group 1
--> # literally, end comment
# # regex delimiter
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句