这是我的代码:$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}我的问题是,为什么不能删除当前行前面的其他空格?
3 回答
梵蒂冈之花
TA贡献1900条经验 获得超5个赞
\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
- 3 回答
- 0 关注
- 180 浏览
添加回答
举报
0/150
提交
取消