首页 新闻 会员 周边

为什么无法过滤掉字段里面的html字符呢?

0
悬赏园豆:20 [待解决问题]
AAA.aspx.cs
    public string strvalue(string value, int length)
    {
        if (value.Length > length)
        {
            value = value.Substring(0, length);
            value = value + "...";
            return NoHTML(value);
        }
        else
        {
            return NoHTML(value);
        }
    }

     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;
    }
 
 
AAA.aspx
<%= strvalue(obj.DAL.index.News(),40)%>
无法过滤掉字段里面的html字符呢?
J--Si的主页 J--Si | 初学一级 | 园豆:184
提问于:2012-05-14 13:44
< >
分享
所有回答(2)
0
public string StripHTML(string str)
{
    //variable to hold the returned value
    string strippedString;
    try
    {
        //variable to hold our RegularExpression pattern
        string pattern = "<.*?>";
        //replace all HTML tags
        strippedString = Regex.Replace(str, pattern, string.Empty);
    }
    catch
    {
        strippedString = string.Empty;
    }
    return strippedString;
}
悟行 | 园豆:12559 (专家六级) | 2012-05-14 13:52

按照你说的办法,我尝试了一下,还是不行····这是为什么呢?这个字段的内容是通过后台的文本编辑器写进去的,有没有什么办法可以解决?O(∩_∩)O谢谢!

支持(0) 反对(0) J--Si | 园豆:184 (初学一级) | 2012-05-14 14:26

@J--Si: 是正则表达式匹配不到,还是不能替换为空呢?????

支持(0) 反对(0) 悟行 | 园豆:12559 (专家六级) | 2012-05-14 14:32

@荒野的呼唤:页面显示出来的效果是 <div>123456789</div>,

AAA.aspx里面这样写<%= StripHTML(obj.DAL.index.New())%>有错吗?
支持(0) 反对(0) J--Si | 园豆:184 (初学一级) | 2012-05-14 14:43

@J--Si: obj.DAL.index.New()????

支持(0) 反对(0) 悟行 | 园豆:12559 (专家六级) | 2012-05-14 14:45

@荒野的呼唤:把字段里面的内容绑定出来  sb.Append(dr["news_content"].ToString());

支持(0) 反对(0) J--Si | 园豆:184 (初学一级) | 2012-05-14 14:53

@J--Si: 你可以断点设置在这儿:  return Htmlstring;,看有没有过滤掉HTML标签。如果过滤掉了,就是你这的问题了<%= StripHTML(obj.DAL.index.New())%>。

支持(0) 反对(0) 悟行 | 园豆:12559 (专家六级) | 2012-05-14 14:54

@荒野的呼唤:断点显示的结果是没有过滤掉html标签,有没有什么好办法可以解决这个问题的,谢谢!请多多指教,救急!

支持(0) 反对(0) J--Si | 园豆:184 (初学一级) | 2012-05-21 21:38
0

楼主调试下呗,应该很好解决的

飞扬的兔子 | 园豆:213 (菜鸟二级) | 2012-05-14 14:55

好解决吗?我已经纠结了很久了,还是没有解决···能否帮忙解决一下?

支持(0) 反对(0) J--Si | 园豆:184 (初学一级) | 2012-05-21 21:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册