C# 如何在C中剥离html标记#

C# 如何在C中剥离html标记#,c#,.net,html,C#,.net,Html,可能重复: 在C#中剥离HTML标记的最佳方法是什么?要保证没有HTML标记通过,请使用: 如果你想让一些人通过,你可以用这个 更新:在该代码中发现了一些漏洞;作为一个整体 (第二个链接包括代码)。公共静态字符串StripHTML(字符串htmlString) { 字符串模式=@“”; 返回Regex.Replace(htmlString,pattern,string.Empty); } 获取您的HTML字符串或文档,并用语法分析它。这将为您提供一个与XmlDocument非常相似的HTMLD

可能重复:


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

要保证没有HTML标记通过,请使用:

如果你想让一些人通过,你可以用这个

更新:在该代码中发现了一些漏洞;作为一个整体

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

公共静态字符串StripHTML(字符串htmlString)
{
字符串模式=@“”;
返回Regex.Replace(htmlString,pattern,string.Empty);
}

获取您的HTML字符串或文档,并用语法分析它。这将为您提供一个与XmlDocument非常相似的HTMLDocument对象

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

如果您选择使用另一种方法,请注意,使用正则表达式解析HTML(一种非正则语言)被广泛认为是一种有效的方法


不管采用哪种方法,如果要保留一些标记,请使用白名单方法。这意味着删除所有不明确需要的内容。

HTMLEncode(“图像标记:”)%%>输出:图像标记:img>,与剥离不同。这取决于他想要的结果。如果他想确保不执行任何HTML标记(从而向XSS开放),那么第一种方法是“最佳”方法。如果他只是想让明文通过,第二种方法的一种变体是“最佳”。他可能想删除标签,在rss提要或其他东西中以明文形式显示。在PHP中,您有一个内置函数,名为which of the sound of it which which which which's which the sound of it which which which which's want。但是白名单解决了这个问题,你也可以使用HTML包或者任何它被称为的东西。实际上,这种方法比上面提到的正则表达式要安全得多。这种方法的唯一缺点是用户可能不想看到编码的HTML。答案中的链接是个坏主意,因为它们有时会断开!你知道你想去掉哪些标签吗?还是全部?即使html标记在将来发生变化,您仍然希望代码正常工作吗?输入是否总是有效的XHTML?重复:HTML Agility Pack为我节省了一天时间+1如果它根本不是一个格式良好的文档怎么办?例如,只要一堆文本中某个地方有一个标记,Agility Pack会帮你解析吗?@EgorPavlikhin是的,它会修复无效的标记并生成一个有效的html文档。+1表示你不应该用正则表达式解析CFG。如果可以的话,我会给你+100分。我很高兴为你服务,mamIck,这个问题在全国重复了很多次,同样糟糕的答案也重复了很多次。正如我在另一篇相同的帖子中所说:“你不应该使用正则表达式来解析像HTML这样的上下文无关语法。如果HTML是由某个外部实体提供的,那么它可以很容易地被操纵来避开你的正则表达式。”我们现在正在使用htmlagilitypack,这取决于你想要实现什么。在不需要质量的情况下,HAP可能非常慢,无法有效地剥离数百万个短字符串;字符串模式=string.Format(“]+类=([“”])[^>]*{0}[^>]*\1[^>]*>(.|\n)*?”,cssClassName);Replace(htmlString,pattern,string.Empty);
  public static string StripHTML(string htmlString)
  {

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

     return Regex.Replace(htmlString, pattern, string.Empty);
  }