【发布时间】:2011-01-21 01:11:51
【问题描述】:
【问题讨论】:
-
您知道要删除哪些标签吗?还是全部?即使将来 html 标签发生变化,您还希望代码工作吗?输入是否总是有效的 XHTML?
【问题讨论】:
为保证没有 HTML 标记通过,请使用:HttpServerUtility.HtmlEncode(string);。
如果你想让一些通过,你可以使用这个"Whitelist" approach。
更新:在该代码中发现了一些漏洞;作为Developer from Fog Creek tells us。
(第二个链接包括代码)。
【讨论】:
public static string StripHTML(string htmlString)
{
string pattern = @"<(.|\n)*?>";
return Regex.Replace(htmlString, pattern, string.Empty);
}
【讨论】:
获取您的 HTML 字符串或文档并使用 HTML Agility Pack 对其进行解析。这将为您提供一个与 XmlDocument 非常相似的 HTMLDocument 对象。
然后您可以使用它的方法,例如SelectNodes 来访问您感兴趣的文档部分。
如果您选择使用其他方法,请注意使用正则表达式解析 HTML(一种非正则语言)被广泛认为是 a bad idea。
无论采用哪种方法,如果您要保留一些标记,请使用白名单方法。这意味着删除所有没有明确需要的内容。
【讨论】: