如何从HTML注释标签中删除缩进或空格?

携带0987

这是我的代码:

$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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章