【发布时间】:2010-12-02 14:03:13
【问题描述】:
我们需要一种在向用户显示而不是向开发人员显示时删除 HTML cmets 的方法。 我想知道最好的方法是什么。
【问题讨论】:
标签: html parsing comments server-side
我们需要一种在向用户显示而不是向开发人员显示时删除 HTML cmets 的方法。 我想知道最好的方法是什么。
【问题讨论】:
标签: html parsing comments server-side
您是从自己的 PHP 页面中删除 cmets,还是从字符串中的其他人的标记中删除 cmets?
对于后者,请按照 Gumbo 的建议使用 HTML 解析器。不要使用正则表达式来解析 HTML,因为它不能。 (我需要为那个句子绑定一个热键。关于 SO 的每第三个问题都试图用正则表达式解析 HTML。这不是一个好主意。)
如果您指的是前者,只需使用 PHP cmets 而不是 HTML cmets,您无需进行任何后期处理:
<?php /* blah */ ?>
【讨论】:
最好使用DOMDocument 之类的解析器,遍历DOM 树并删除所有注释节点。或者您自己构建一个解析器。
【讨论】:
试试:
$html = eregi_replace("<!--[^>]*-->", "", $html);
或者使用preg_replace,如下所述:
$html = preg_replace("/<!--(.|\s)*?-->/", "", $html);
而且,是的,无论哪种方式,嵌入在字符串中的注释分隔符都会导致问题。
【讨论】:
<p title="<!--">foo--></p> 呢?