在C#中删除HTML标记的最佳方法是什么?
答案 0 :(得分:21)
public static string StripHTML(string htmlString)
{
string pattern = @"<(.|\n)*?>";
return Regex.Replace(htmlString, pattern, string.Empty);
}
答案 1 :(得分:7)
获取HTML字符串或文档,并使用HTML Agility Pack进行解析。这将为您提供一个与XmlDocument非常相似的HTMLDocument对象。
然后,您可以使用SelectNodes
等方法访问您感兴趣的文档部分。
如果您选择使用其他方法,请注意使用正则表达式解析HTML(非常规语言)被广泛视为a bad idea。
无论采用何种方法,如果要保留一些标记,请使用白名单方法。这意味着删除所有未明确需要的内容。
答案 2 :(得分:1)
要确保没有HTML标记通过,请使用:HttpServerUtility.HtmlEncode(string);
。
如果您希望某些通过,可以使用此"Whitelist" approach。
更新:该代码中存在一些漏洞;作为Developer from Fog Creek tells us。
(第二个链接包括代码)。