PHP preg_replace html注释空白空间

时间:2010-03-23 10:29:00

标签: php html regex comments preg-replace

我有一些像这样的PHP代码:

$test = "<!--my comment goes here--> Hello World";

现在我想从字符串中删除整个html注释,我知道我需要使用preg_replace,但现在肯定在正则表达式中进入那里。 有人可以帮忙吗? 感谢

6 个答案:

答案 0 :(得分:7)

$str=<<<'EOF'
<!--my comment goes here--> Hello World"
blah  <!-- my another
comment here --> blah2
end
EOF;

$r="";
$s=explode("-->",$str);
foreach($s as $v){
  $m=strpos($v,'<!--');
  if($m!==FALSE){
   $r.=substr($v,1,$m);
  }
}
$r.=end($s);
print $r."\n";

输出

$ php test.php
Hello World"
blah  < blah2
end

或者如果你必须preg_replace,

preg_replace("/<!--.*?-->/ms","",$str);

答案 1 :(得分:6)

preg_replace('/<!--(.*)-->/Uis', '', $html)

将删除$html字符串中包含的每个html注释。希望这有帮助!

答案 2 :(得分:3)

尝试

 preg_replace('~<!--.+?-->~s', '', $html);

答案 3 :(得分:0)

<?php
$test = "<!--my comment goes here--> Hello World";
echo  preg_replace('/\<.*\> / ','',$test);
?>

使用以下代码进行全局替换:

<?php
$test = "<!--my comment goes here--> Hello World <!--------welcome-->welcome";
echo  preg_replace('/\<.*?\>/','',$test);
?>

答案 4 :(得分:0)

只有当您没有2条评论时才能使用这些内容,例如...

<!--comment--> Im a goner <!--comment-->

你需要......

//preg_replace('/<!--[^>]*-->/', '', $html); // <- this is incorrect see ridgrunners comments below, you really need ...
preg_replace('/<!--.*?-->/', '', $html);

[^&gt;]匹配除&gt;之外的任何内容为了不超过匹配&gt;寻求下一个。 我没有测试过phps正则表达式,但它声称是perl正则表达式,默认情况下是“贪婪”并且会尽可能匹配。

但是,由于您匹配一个特定命名的占位符,您只需要整个字符串并使用str_replace()代替。

str_replace('<!--my comment goes here-->', $comment, $html);

并且,不是替换文件中的占位符,而是将其设为php文件并写出变量。

:)

答案 5 :(得分:0)

这应该为您做

 <div class="svg-container">
    <svg id="canvas" version="1.1"  viewBox="0 0 500 500">  
        <path width="100%"  id="curve" fill="none" d="M0,0 h200 a20,20 0 0 1 20,20 v200 a20,20 0 0 1 -20,20 h-200 a20,20 0 0 1 -20,-20 v-200 a20,20 0 0 1 20,-20 z" />
        <text font-family="Helvetica" font-size="20" fill="black">
            <textPath xlink:href="#curve" startOffset="0%" id="text">Last News</textPath>
        <animate xlink:href="#text" attributeName="startOffset" from="0%" to="100%" begin="0s" dur="10s" repeatCount="indefinite"/>
        </text>
    </svg>
    </div>