asp.net敏感词过滤
敏感词过滤是一个能够让用户发表评论的网站的一个很重要的功能(你懂的~)
下面开始全套流程:
1.需要有一套比较完整的词库,由于我的词库很少所以就不贴上来了,网上找找应该很多
2.设计一个可以将词库导入数据库的功能(以最最简单的界面为例,如下图:)
简单到都不好意思贴出来了。。。
3.词库文件的格式有很多
比如:
aaa|1
bbb|2
又或者
aaa={banned}
bbb={mod}
这里以第一种格式为例
管理员将词库文件的内容全部复制黏贴至文本款,点击导入
后台处理代码(由于我的词库只有aaa|1 没有表示都是禁用,没有审核词,所以需要进行审核词判断的要自己进行修改):
 string msg = TextBox1.Text.Trim();
            string[] words = msg.Split(new char[] {'\r', '\n'}, StringSplitOptions.RemoveEmptyEntries);
            foreach (var word in words)
            {
                string[] w = word.Split('|');
                T_Words ww = new T_Words();
                ww.Word = w[0];
                wordsBll.Add(ww);
            }
            TextBox1.Text = "";4.在前台用户点击发表的时候起一个ajax请求到后台进行判断
后台代码:
foreach (var wordse in wordList)
                    {
                        string s = wordse.Word;
                        list.Add(s);
                    }
                    string wStrings = string.Join("|", list.ToArray());
                    if (Regex.IsMatch(msg, wStrings) || Regex.IsMatch(title, wStrings))
                    {
                        Response.Write("isBanned");
                        Response.End();
                    }取出数据库词库表中的所有值存放在wordList实体集合中
遍历集合把每个词都用“|”分割加入wString中以正则表达式对用户发表的内容进行匹配
如果匹配到用户发表的内容有任何一个词是禁用的
那么发送isBanned到前台并提示含有禁用词
在这个地方,可以将禁用词放入缓存中,以免每次都要请求数据库,造成资源浪费
这个例子仅仅是为了实现功能,对性能方面没有考虑
可以自己更改~
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号