`
niunan
  • 浏览: 719485 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

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

    博客分类:
  • .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利用正则在HTML中提取图片路径(asp.net正则表达式过滤出HTML代码中图片路径).txt

    上述两个方法都使用了相同的正则表达式来匹配 HTML 中的图片路径,但它们在处理结果的方式上有所不同。`GetImgUrl` 只返回第一次匹配的结果,而 `MyGetImgUrl` 返回所有匹配结果,并将它们存储在一个 `StringBuilder...

    asp.net下比较两个等长字符串是否含有完全相同字符(忽略字符顺序)

    将两个字符串转换为`HashSet`后,可以迅速判断集合中的元素是否存在另一个集合中,并且能够自动过滤掉重复的字符。 ### 知识点6:最大公共子序列(LCS)与最长公共子串(LD) 在文章的评论部分提到了最大公共子...

    asp.net IHttpModule实现网站内容过滤

    这两个方法之间的任何处理都可以用来执行内容过滤。 实现IHttpModule的步骤如下: 1. **定义类并实现IHttpModule接口**: 创建一个新的C#类,并实现`IHttpModule`接口。需要实现`Init`和`Dispose`两个方法。`Init...

    asp.net控制字符

    此方法接受两个参数:`value`(待处理的字符串)和`length`(期望的最大长度)。如果`value`的长度超过`length`,则会截取前`length`个字符,并在其后添加省略号,以表示文本已被截断。若`value`的长度未超过`length...

    ASP.NET HTML移除空格

    3. **使用Server.HtmlEncode()和Server.HtmlDecode()**:这两个方法可以对字符串进行编码和解码,编码后空格会转换成`%20`,在页面渲染时再解码,但这样并不能真正减少HTML的字节数,仅用于防止XSS攻击。 4. **启用...

    ASP.NET资料库

    在ASP.NET中,通常用System.Security.Cryptography命名空间下的MD5类来计算字符串或文件的MD5哈希值,用于数据验证或密码存储。 "Asp.Net经典25问.doc"可能是一份涵盖了ASP.NET常见问题和解决方案的文档。这些问题...

    ASP.NET MVC web List

    在本项目"ASP.NET MVC Web List"中,我们将探讨如何使用ASP.NET MVC实现一个简单的列表展示功能,这对于初学者来说是一个很好的入门实践。 首先,ASP.NET MVC 的核心概念包括模型(Model)、视图(View)和控制器...

    【ASP.NET编程知识】高效.NET脏字过滤算法与应用实例.docx

    在ASP.NET编程中,脏字过滤是一个常见的需求,特别是在处理用户输入或评论时,需要防止不适当或恶意的词汇出现。本实例介绍了一种高效的.NET脏字过滤算法,该算法可以快速有效地检测文本中是否存在黑名单词汇。以下...

    Aap.net过滤恶意参数提交(Application_BeginRequest事件

    ### ASP.NET中的Aap.net过滤恶意参数提交(Application_BeginRequest事件) 在Web应用程序开发中,保护应用程序不受SQL注入等安全威胁至关重要。ASP.NET提供了一系列机制来帮助开发者实现这一目标,其中一种常用的...

    ASP.NET中文手册

    模型绑定和过滤器是MVC中的两个重要特性,前者简化了数据输入验证,后者提供了全局性和控制器级别的行为。 8. **ASP.NET Identity**:这是一个用于身份验证和授权的框架,支持本地账户、社交登录和角色管理。理解...

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

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

    asp.net校友录(带数据库)

    在这个校友录系统中,我们看到它基于ASP.NET 3.5版本,这是一个强大的开发平台,提供了丰富的控件、数据绑定、事件处理等特性,使得开发者能够更高效地构建动态网站。 1. **ASP.NET架构**:ASP.NET 3.5是.NET ...

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

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

    【ASP.NET编程知识】拦截asp.net输出流并进行处理的方法.docx

    在提供的代码示例中,开发者展示了两种方法来拦截ASP.NET的输出流: 1. 通过Page类的生命周期方法: 这段代码创建了一个StringBuilder对象来存储HTML内容。在Page_Load事件中,使用反射获取HttpResponse对象的私有...

    asp.net MVC3 中文下载

    在模型绑定方面,ASP.NET MVC3增强了对复杂类型的绑定支持,可以自动将表单数据或查询字符串映射到复杂的模型对象,减少了手动解析输入数据的工作。同时,模型验证也得到了加强,支持数据注解验证和外部验证库如...

    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.NET编程知识】合并两个DataSet的数据内容的方法.docx

    在ASP.NET编程中,数据处理是常见的任务之一,特别是在构建Web应用程序时。本文将深入探讨如何合并两个DataSet的数据内容,这是在处理多个数据源时非常有用的技巧。DataSet是.NET Framework中用于存储和操作关系数据...

    .net 过滤重复数据

    ### .NET过滤重复数据知识点详解 #### 一、概述 在.NET编程中,过滤重复数据是一项常见的需求,尤其是在处理大量数据时。本文介绍的方法通过使用`List`集合和递归技术来实现对数字序列中重复项的过滤。该方法不仅...

    在asp.net中使用jquery实现无刷新的验证用户名是否存在

    在ASP.NET中使用jQuery实现无刷新的验证用户名是否存在,是一种典型的AJAX应用,它通过异步请求与服务器交互,无需重新加载整个页面即可完成数据的校验,极大地提升了用户体验。以下是对这一知识点的详细解析: ###...

Global site tag (gtag.js) - Google Analytics