如何在C#中删除html标签

Mr.*_*arp 15 .net html c#

可能重复:
如何使用C#清理HTML标记

在C#中删除HTML标记的最佳方法是什么?

Iva*_* G. 23

  public static string StripHTML(string htmlString)
  {

     string pattern = @"<(.|\n)*?>";

     return Regex.Replace(htmlString, pattern, string.Empty);
  }
Run Code Online (Sandbox Code Playgroud)

  • 妈妈,我很高兴为您服务 (6认同)
  • Ick,这个问题在SO中重复了很多,同样糟糕的答案也重复了很多.正如我在另一篇相同的帖子中所说的那样:"你不应该使用正则表达式来解析像HTML这样的无上下文语法.如果HTML是由某个外部实体提供的,那么它可以很容易地被操纵以逃避你的正则表达式". (2认同)

Lac*_*che 7

获取HTML字符串或文档,并使用HTML Agility Pack进行解析.这将为您提供一个与XmlDocument非常相似的HTMLDocument对象.

然后,您可以使用它的方法,例如SelectNodes访问您感兴趣的文档部分.

如果您选择使用其他方法,请注意使用正则表达式解析HTML(非常规语言)被广泛认为是一个坏主意.

无论采用何种方法,如果要保留一些标记,请使用白名单方法.这意味着删除所有未明确需要的内容.


Geo*_*ker 1

为了保证没有 HTML 标签通过,请使用:HttpServerUtility.HtmlEncode(string);

如果你想让一些人通过,你可以使用这种“白名单”的方法

更新:该代码中发现了一些漏洞;正如Fog Creek 的一位开发人员告诉我们的那样。

(第二个链接包含代码)。

  • HTMLEncode("图像标签:&lt;img&gt;")) %&gt; 输出:图像标签:&lt;img&gt; 与 Strip it 不同。 (11认同)