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;
    }

     
     
     
  • 相关阅读:
    ThinkPHP 3.2.2 实现持久登录 ( 记住我 )
    Java实现 LeetCode 20 有效的括号
    Java实现 LeetCode 20 有效的括号
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 17 电话号码的字母组合
  • 原文地址:https://www.cnblogs.com/xiurui12345/p/2541927.html
Copyright © 2011-2022 走看看