• 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[] {'
    ', '
    '}, 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到前台并提示含有禁用词

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

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

    可以自己更改~

  • 相关阅读:
    刷题(十五)
    Pycharm按装
    Jmeter
    内存泄露部分检测工具
    Failed to resolve
    图片显示方向不对怎么办
    ScaleType属性
    RobotFramework
    LoadRunner
    Appium
  • 原文地址:https://www.cnblogs.com/jchubby/p/4429748.html
Copyright © 2020-2023  润新知