asp.net敏感词过滤

xiaohei.info 2014-07-07

数据库 ADD 正则表达式 string asp list regex

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq1010885678/article/details/37529533

敏感词过滤是一个能够让用户发表评论的网站的一个很重要的功能(你懂的~)

下面开始全套流程:

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到前台并提示含有禁用词

在这个地方,可以将禁用词放入缓存中,以免每次都要请求数据库,造成资源浪费

这个例子仅仅是为了实现功能,对性能方面没有考虑

可以自己更改~

登录 后评论
下一篇
云栖号资讯小编
15841人浏览
2020-07-13
相关推荐
The Chain Of Responsibility (1)
925人浏览
2016-05-24 09:31:00
Python实现敏感词过滤替换
2377人浏览
2017-02-23 15:14:00
正则表达式
1322人浏览
2013-01-22 08:18:00
JS-过滤敏感词【RegExp】
508人浏览
2017-03-17 11:55:00
如何优雅地过滤敏感词
6337人浏览
2018-08-06 13:26:44
Java实现敏感词过滤
1224人浏览
2016-04-18 16:55:49
0
0
0
968