网络编程
位置:首页>> 网络编程>> ASP.NET>> c#中过滤html的正则表达式

c#中过滤html的正则表达式

作者:mdxy-dxy  发布时间:2023-07-04 04:03:24 

标签:c#,过滤,html

实现代码


///  <summary>
///  去除HTML标记
///  </summary>
///  <param  name=”NoHTML”>包括HTML的源码  </param>
///  <returns>已经去除后的文字</returns>
public static string NoHTML(string Htmlstring)
{
 //删除脚本
 Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>", "",
 RegexOptions.IgnoreCase);
 //删除HTML
 Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "",
 RegexOptions.IgnoreCase);
 Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "",
 RegexOptions.IgnoreCase);
 Htmlstring = Regex.Replace(Htmlstring, @"–>", "", RegexOptions.IgnoreCase);
 Htmlstring = Regex.Replace(Htmlstring, @"<!–.*", "", RegexOptions.IgnoreCase);
 Htmlstring = Regex.Replace(Htmlstring, @"&(quot|#34);", "\"",
 RegexOptions.IgnoreCase);
 Htmlstring = Regex.Replace(Htmlstring, @"&(amp|#38);", "&",
 RegexOptions.IgnoreCase);
 Htmlstring = Regex.Replace(Htmlstring, @"&(lt|#60);", "<",
 RegexOptions.IgnoreCase);
 Htmlstring = Regex.Replace(Htmlstring, @"&(gt|#62);", ">",
 RegexOptions.IgnoreCase);
 Htmlstring = Regex.Replace(Htmlstring, @"&(nbsp|#160);", "  ",
 RegexOptions.IgnoreCase);
 Htmlstring = Regex.Replace(Htmlstring, @"&(iexcl|#161);", "\xa1", RegexOptions.IgnoreCase);
 Htmlstring = Regex.Replace(Htmlstring, @"&(cent|#162);", "\xa2", RegexOptions.IgnoreCase);
 Htmlstring = Regex.Replace(Htmlstring, @"&(pound|#163);", "\xa3", RegexOptions.IgnoreCase);
 Htmlstring = Regex.Replace(Htmlstring, @"&(copy|#169);", "\xa9", RegexOptions.IgnoreCase);
 Htmlstring = Regex.Replace(Htmlstring, @"&#(\d+);", "", RegexOptions.IgnoreCase);
 Htmlstring.Replace("<", "");
 Htmlstring.Replace(">", "");
 Htmlstring.Replace("\r\n", "");
 Htmlstring = HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim();
 return Htmlstring;
}

C#过滤Html标签及空格


public static string FilterHTML(string HTMLStr)
   {
     if (!string.IsNullOrEmpty(HTMLStr))
       return System.Text.RegularExpressions.Regex.Replace(HTMLStr, "<[^>]*>|&nbsp;", "");
     else
       return "";
   }

写一个静态方法移除HTML标签


#region
///  <summary>
///  移除HTML标签
///  </summary>
///  <param  name="HTMLStr">HTMLStr</param>
public static string ParseTags(string HTMLStr)
{
return System.Text.RegularExpressions.Regex.Replace(HTMLStr, "<[^>]*>", "");
}
#endregion

取出文本中的图片地址


#region
///  <summary>
///  取出文本中的图片地址
///  </summary>
///  <param  name="HTMLStr">HTMLStr</param>
public static string GetImgUrl(string HTMLStr)
{
string str = string.Empty;
string sPattern = @"^<img\s+[^>]*>";
Regex r = new Regex(@"<img\s+[^>]*\s*src\s*=\s*([']?)(?<url>\S+)'?[^>]*>",
 RegexOptions.Compiled);
Match m = r.Match(HTMLStr.ToLower());
if (m.Success)
 str = m.Result("${url}");
return str;
}
#endregion

提取HTML代码中文字的C#函数


///  <summary>
///  提取HTML代码中文字的C#函数
///  </summary>
///  <param  name="strHtml">包括HTML的源码  </param>
///  <returns>已经去除后的文字</returns>
using System;
using System.Text.RegularExpressions;
public class StripHTMLTest
{
public static void Main()
{
 string s = StripHTML(
  "<HTML><HEAD><TITLE>中国石龙信息平台</TITLE></HEAD><BODY>faddfs龙信息平台</BODY></HTML>");
 Console.WriteLine(s);
}

public static string StripHTML(string strHtml)
{
 string[]aryReg =
 {
  @"<script[^>]*?>.*?</script>",

@"<(\/\s*)?!?((\w+:)?\w+)(\w+(\s*=?\s*(([""'])(\\["
   "'tbnr]|[^\7])*?\7|\w+)|.{0})|\s)*?(\/\s*)?>", @"([\r\n])[\s]+", @
   "&(quot|#34);", @"&(amp|#38);", @"&(lt|#60);", @"&(gt|#62);", @
   "&(nbsp|#160);", @"&(iexcl|#161);", @"&(cent|#162);", @"&(pound|#163);",
   @"&(copy|#169);", @"&#(\d+);", @"-->", @"<!--.*\n"
 };

string[]aryRep =
 {
  "", "", "", "\"", "&", "<", ">", "  ", "\xa1", //chr(161),
  "\xa2", //chr(162),
  "\xa3", //chr(163),
  "\xa9", //chr(169),
  "", "\r\n", ""
 };

string newReg = aryReg[0];
 string strOutput = strHtml;
 for (int i = 0; i < aryReg.Length; i++)
 {
  Regex regex = new Regex(aryReg[i], RegexOptions.IgnoreCase);
  strOutput = regex.Replace(strOutput, aryRep[i]);
 }
 strOutput.Replace("<", "");
 strOutput.Replace(">", "");
 strOutput.Replace("\r\n", "");
 return strOutput;
}
}

TempContent 表示包含有html的字符串;
TempContent = System.Text.RegularExpressions.Regex.Replace(TempContent,"<[^>]+>","");至少一个
TempContent = System.Text.RegularExpressions.Regex.Replace(TempContent,"<[^>]*>","");任意个 

0
投稿

猜你喜欢

  • 第一类工厂相当于mootools的Native方法,用于创建一些具有扩展能力的类,但这些类并没有继承能力,此类工厂也不能以某个类作为蓝本创建
  • 提到SQL Server 2005证书,很多人可能以为它只是用来在传输数据的时候起到加密作用的,但在深入了解后,你会发现它的用处还有很多。
  • JavaScript游戏开发之键盘控制层的移动截图:<html> <head> <meta http-equi
  • 关于采集-防采集的我想大家都很清楚。这个就不多说,采集最终还是从页面源代码入手,所以只要没有规律想采集就难!由于一天自己在策划某个网站的时候
  • 数据库开发数据库应用,选择一个好的数据库是非常重要的。下面从一些方面比较了SQL Server与Oracle、DB2三种数据库,为你选择数据
  • 字体的处理在网页设计中无论怎么强调也不为过, 毕竟网页使用来传递信息的, 而最经典最直接的信息传递方式就是文字,&nbs
  • 俺觉得自 己试着写写sql,调试调试还是有帮助的,读人家sql例子好像读懂了,自己写就未 必思路正确,调试得通,写得简洁。 这篇文字在网上被
  • Player.playState0 Undefined Windows Media Player is in an undefined st
  • Truncate是SQL中的一个删除数据表内容的语句,用法是:TRUNCATE TABLE [Table Name]。下面是对Truncat
  • 在 Web 2.0 时代,开发人员和用户都对基于 Web 的应用程序的可用性和响应性抱有很高的期望。除非是在过去的两年内一直没有关注过这个领
  • 在做视觉设计时,如何高效地使用图标是一门学问:该使用什么样的图标?图标该放在哪里?大小如何?图标的使用是否帮助用户更好更快的理解内容,亦或是
  • 写完“无序列表”和“有序列表”之后已经有人和我说这两篇看得没什么意思。这两篇文章如果只以单向读取的形式阅读那么的确是没什么意思,但是这两篇重
  • A.截取从字符串左边开始N个字符 Declare @S1 varchar(100) Select @S1='http://www.x
  • 小贤是一条可爱的小狗(Dog), 它的叫声很好听(wow), 每次看到主人的时候就会乖乖叫一声(yelp).从这段描述可以得到以下对象:fu
  • 为了防止某些别有用心的人从外部访问数据库,盗取数据库中的用户姓名、密码、信用卡号等其他重要信息,在我们创建数据库驱动的解决方案时,我们首先需
  • MS SQL Server 2000通过企业管理器设置数据库的定期自动备份计划。1、打开企业管理器,双击打开你的服务器2、然后点上面菜单中的
  • 实现了宽度、高度、透明度的渐变,还能以高度宽度中点为中心,还扩展成以任意点为中心渐变(实例中以点击点为中心)。<!DOCTYPE ht
  • 类、构造函数、原型先来说明一点:在上面的内容中提到,每一个函数都包含了一个prototype属性,这个属性指向了一个prototype对象(
  • Oracle数据库以其高可靠性、安全性、可兼容性,得到越来越多的企业的青睐。如何使Oracle数据库保持优良性能,这是许多数据库管理员关心的
  • MSSQL随机数 MSSQL有一个函数CHAR()是将int(0-255) ASCII代码转换为字符。那我们可以使用下面MS SQL语句,可
手机版 网络编程 asp之家 www.aspxhome.com