`
xfth2009
  • 浏览: 49455 次
  • 性别: Icon_minigender_2
  • 来自: 襄樊
社区版块
存档分类
最新评论

ASP.NET中过滤HTML字符串的两个方法

阅读更多
2010-05-20
文章分类:.net编程

先记下来,以作备用!

 

        ///   <summary>去除HTML标记
        ///       
        ///   </summary>   
        ///   <param name="Htmlstring">包括HTML的源码</param>   
        ///   <returns>已经去除后的文字</returns>   
        public static string GetNoHTMLString(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;
        }


        /// <summary>获取显示的字符串,可显示HTML标签,但把危险的HTML标签过滤,如iframe,script等。
        /// 
        /// </summary>
        /// <param name="str">未处理的字符串</param>
        /// <returns></returns>
        public static string GetSafeHTMLString(string str)
        {
            str = Regex.Replace(str, @"<applet[^>]*?>.*?</applet>", "", RegexOptions.IgnoreCase);
            str = Regex.Replace(str, @"<body[^>]*?>.*?</body>", "", RegexOptions.IgnoreCase);
            str = Regex.Replace(str, @"<embed[^>]*?>.*?</embed>", "", RegexOptions.IgnoreCase);
            str = Regex.Replace(str, @"<frame[^>]*?>.*?</frame>", "", RegexOptions.IgnoreCase);
            str = Regex.Replace(str, @"<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase);
            str = Regex.Replace(str, @"<frameset[^>]*?>.*?</frameset>", "", RegexOptions.IgnoreCase);
            str = Regex.Replace(str, @"<html[^>]*?>.*?</html>", "", RegexOptions.IgnoreCase);
            str = Regex.Replace(str, @"<iframe[^>]*?>.*?</iframe>", "", RegexOptions.IgnoreCase);
            str = Regex.Replace(str, @"<style[^>]*?>.*?</style>", "", RegexOptions.IgnoreCase);
            str = Regex.Replace(str, @"<layer[^>]*?>.*?</layer>", "", RegexOptions.IgnoreCase);
            str = Regex.Replace(str, @"<link[^>]*?>.*?</link>", "", RegexOptions.IgnoreCase);
            str = Regex.Replace(str, @"<ilayer[^>]*?>.*?</ilayer>", "", RegexOptions.IgnoreCase);
            str = Regex.Replace(str, @"<meta[^>]*?>.*?</meta>", "", RegexOptions.IgnoreCase);
            str = Regex.Replace(str, @"<object[^>]*?>.*?</object>", "", RegexOptions.IgnoreCase);
            return str;
        }

 

分享到:
评论

相关推荐

    ASP.NET中如何防范SQL注入式攻击

    ASP.NET中如何防范SQL注入式攻击 一、什么是SQL注入式攻击?  所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的...

    ASP.NET 控件的使用

    9.3 在SqlDataSource控件中使用ASP.NET参数 271 9.3.1 使用ASP.NET参数对象 272 9.3.2 使用ASP.NET的Control-Parameter对象 274 9.3.3 使用ASP.NET的Cookie-Parameter对象 277 9.3.4 使用ASP.NET的Form-Parameter...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    ASP.NET 4高级程序设计(第4版)》【原版书为:Pro ASP.NET 4 in C# 2010】是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的...

    ASP.NET4高级程序设计(第4版) 3/3

     《ASP.NET 4高级程序设计(第4版)》是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的建议。书中还深入讲述了其他ASP.NET图书...

    WebApiJQGridFilters:用于 ASP.NET Web API 的 jqGrid 过滤器的解析器

    该项目包含两个组件来帮助使用过滤器和使用 ASP.NET Web API 进行排序。 将 jqGrid JSON 字符串转换为静态类型的 .NET 对象的 TypeConverter。 将过滤器和排序应用于 IQueryable 对象的几种辅助方法。 帮助程序...

    Url重写篇视频------本讲将通过实例比较ASP.NET下的三种典型URL重写方案

    回到前面的规则定义部分,我们就能发现,folder default page使用的是由IIRF这个ISAPI定义的规则,而另两个则使用的是内置于ASP.NET2.0的HTTPModule的重写规则(本质上,urlMappings也是使用HTTPModule来实现重写的...

    jquery ajax TreeView asp.net改进版

    我结合http://www.cnblogs.com/xuanye/archive/2009/10/26/1590250.html的改进版做的这个改进版(因为很多人没读他的源码,不知道怎么请求节点的处理页面),把asp.net的json序列化 都做了进去(Newtonsoft.json...

    TblAdmin:C#中的一个学习项目,asp.Net MVC

    表管理员一个示例学习项目,让我在 EF 的 asp.Net MVC 中涉足。... 过滤/排序/分页状态在整个管理员的查询字符串中维护为集成测试建立了一个内存数据库我正在模拟 EF 的 DbSet 并将其注入控制器进行测试,而不是创建额

    net学习笔记及其他代码应用

    答:string str = null 是不给他分配内存空间,而string str = \"\" 给它分配长度为空字符串的内存空间。 25.请详述在dotnet中类(class)与结构(struct)的异同? 答:Class可以被实例化,属于引用类型,是分配在内存的...

    权限及公共模块设计-教务管理平台-asp.net-课设

    3.加密模块及字符串验证与过滤等公共模块。 系统公共模块包括系统数据库操作,系统通用工具类,树目录管理,系统通用页面设计。 测试是软件系统最重要的部分,鉴于个人能力和软件环境的有限性,在系统设计和开发...

    M4MoviesApi:一个Asp.Net核心API,它使用微服务从TMDB数据库中获取移动数据,并使用存储库模式和工作单元设计将一些影片保存到SQL数据库中。 它包括登录,注册操作。 登录的用户可以执行一些操作

    当前版本的API中包含两个操作。 Get(字符串searchType =“ popular”) 其中searchType是字符串和过滤器,例如:-流行,即将开始,no_playing等... 获取(id) 其中id是电影ID 得到() 将为您提供所有的观看...

    ExtAspNet_v2.3.2_dll

    +去除PageManager中方法AddAjaxAspnetControls,增加属性AjaxAspnetControls。 -这个属性和Button得ValidateForms属性类似,可以查看Asp.net compatibility中的示例。 +2009-08-25 v2.0.7 -为按钮增加...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    +去除PageManager中方法AddAjaxAspnetControls,增加属性AjaxAspnetControls。 -这个属性和Button得ValidateForms属性类似,可以查看Asp.net compatibility中的示例。 +2009-08-25 v2.0.7 -为按钮增加...

    仿世纪佳缘婚介交友系统5.3 ASP+SQL

    那么重点看一下[系统用户组管理]——邮件激活及审核状态两个组的权限,进入编辑可以设置。然后记得更新一下缓存,更新缓存方法下面会介绍到。 3、管理员添加 | 管理:(admin.asp) 顾名思义就是添加管理员功能...

    Entity Framework 6 Recipes(中文word翻译版)

    第20部分 ASP.NET MVC中使用实体框架之在MVC中构建一个CRUD示例 第21部分 ASP.NET MVC中使用实体框架之在页面中创建查询和使用ASP.NET URL路由过虑 第22部分 加载实体和导航属性之延迟加载 第23部分 加载实体和导航...

    桃源网络硬盘.Net v5.2

    主要功能: 1.... 2.在自己的空间中上传多文件及大文件进行在线查看管理,可建多级目录存放。 3.文件目录多级共享,可共享整个用户空间。 4.... 数据库连接字符串在web.config文件中。

    C#编程经验技巧宝典

    73 &lt;br&gt;0106 如何获得一个字符串中数字的长度 74 &lt;br&gt;0107 如何获得字符串中数字或字母的长度 74 &lt;br&gt;0108 如何获得字符串中某个数字的位置 75 &lt;br&gt;0109 获得字符串中汉字的个数 76 &lt;br&gt;0110...

Global site tag (gtag.js) - Google Analytics