我有一些像这样的PHP代码:
$test = "<!--my comment goes here--> Hello World";
现在我想从字符串中删除整个html注释,我知道我需要使用preg_replace,但现在肯定在正则表达式中进入那里。 有人可以帮忙吗? 感谢
答案 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>