我试图去除嵌入HTML文件如何删除HTML注释在PHP
$data= file_get_contents($stream); <br>
$data = preg_replace('<!--*-->', '', $data); <br>
echo $data;
我仍然与所有的评论<结束了任何意见! - 唧唧歪歪 - >
什么我做错了吗?
我试图去除嵌入HTML文件如何删除HTML注释在PHP
$data= file_get_contents($stream); <br>
$data = preg_replace('<!--*-->', '', $data); <br>
echo $data;
我仍然与所有的评论<结束了任何意见! - 唧唧歪歪 - >
什么我做错了吗?
正则表达式很难牵扯到你想要做的事情。
要匹配正则表达式中的任意文本,您需要.*
,而不仅仅是*
。您的表情正在寻找<!-
,之后是零个或多个-
个字符,然后是-->
。
我的目标html有多行评论..一行评论工作正常...我如何修复多行注释? –
你实际上需要'。*?'来尽可能少的匹配,否则你会从第一个'<! - '到最后一个' - >'这个不是你想要的东西。 –
s/<!--[^>]*?-->//g
交换机最多的正则表达式
你实际上需要'[^>] *?'尽可能少地匹配,否则你会从第一个'<! - '到最后一个' - >'这个不是你想要的东西。 –
下面的正则表达式会删除HTML注释,但将保留条件注释。
<!--(?!<!)[^\[>].*?-->
'strip_tags'去除所有标签,而不仅仅是注释。 –
@NedBatchelder,感谢您的建议,我快速读了这个问题,并没有关注这个问题。我做了一个编辑。 –
'strip_tags'总是去掉评论,但你可以指定去掉WHAT标签。指定不在HTML中的东西,并且仅剥下注释。 – ghoti
你应该做的是这样的:
$str = "<html><!-- this is a commment -->OK</html>";
$str2 = preg_replace('/<!--.*-->/s', '', $str);
var_dump($str2);
我是用文件解析一个页面获取内容......用这段代码我仍然以最后所有的评论 –
反斜杠太多,没有足够的懒惰的明星。 – ghoti
编辑(删除反斜杠),我试过(在我的情况下)它的作品。 –
你可以做到这一点,而无需使用正则表达式:
function strip_comments($html)
{
$html = str_replace(array("\r\n<!--", "\n<!--"), "<!--", $html);
while(($pos = strpos($html, "<!--")) !== false)
{
if(($_pos = strpos($html, "-->", $pos)) === false)
$html = substr($html, 0, $pos);
else
$html = substr($html, 0, $pos) . substr($html, $_pos+3);
}
return $html;
}
在右侧看到这些链接>> [正则表达式的 – 2012-07-05 02:56:15
可能重复,以去除HTML评论](http://stackoverflow.com/questions/1084741/regexp-to-strip-html-comments) – xdazz