zoukankan      html  css  js  c++  java
  • HTML标签过滤方案

    解决方案1:

    在数据库中存入标签的HTML转换符,按照原样输出。

    在存入数据库之前,加上server.htmlEncode(txtboxName.text);

    解决方案2:

    在数据库中不存入HTML标签的有关信息,过滤HTML标签,只显示文字。

    存入数据库之前加上过滤函数过滤便可:checkStr(txtboxName.text)或者StripHTML(txtboxName.text)或者NoHTML(txtboxName.text);(提供三个过滤函数,任选一个,添加命名空间:using System.Text.RegularExpressions;)

    以下代码均调试通过:

    /// <summary>
    /// 方法二:去除HTML标记
    /// </summary>
    /// <param name="StripHtml">包括HTML的源码 </param>
    /// <returns>已经去除后的文字</returns>
    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;
    }

    /// <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);
    return Htmlstring;
    }

     
     
     
  • 相关阅读:
    forEach
    Apache localhost和局域网ip地址访问
    数据库基础知识(必读)
    设计模式其他常见面试题
    设计模式学习
    简历书写注意事项
    计算机网络常见面试题二
    计算机网络常见面试题一
    分布式系统中的CAP 理论
    多线程常见面试题一
  • 原文地址:https://www.cnblogs.com/xiurui12345/p/2541927.html
Copyright © 2011-2022 走看看