js敏感词过滤
var filterWord={
words:"",
tblRoot:{},
//敏感词文件
file:"sensitiveWords.txt",
//载入敏感词组
load:function (file,callback) {
file=file||this.file;
var objHttp;
if (window.ActiveXObject) {
objHttp = new ActiveXObject("Microsoft.XMLHTTP");
}else {
objHttp = new XMLHttpRequest();
objHttp.overrideMimeType("text/xml");
}
objHttp.onreadystatechange = function () {
if (objHttp.readyState != 4)
return;
this.words = objHttp.responseText;
callback(objHttp.responseText);
};
objHttp.open("GET", file, true);
objHttp.send(null);
},
//将关键字生成一颗树
makeTree:function (callback) {
if(this.words==""){
this.load(this.file,function (words) {
var strKeys = words;
var arrKeys = strKeys.split("");
var tblCur = this.tblRoot = {};
var key;
for (var i = 0, n = arrKeys.length; i < n; i++) {
key = arrKeys[i];
//完成当前关键字
if (key == ';'){
tblCur.end = true;
tblCur = this.tblRoot;
continue;
}
//生成子节点
if (key in tblCur)
tblCur = tblCur[key];
else
tblCur = tblCur[key] = {};
}
//最后一个关键字没有分割符
tblCur.end = true;
callback(this.tblRoot);
});
}else{
callback(this.tblRoot);
}
},
//标记出内容中敏感词的位置
searchWords:function (content,root) {
var tblCur,p, v,i = 0,arrMatch = [];
var n = content.length;
while (i < n) {
tblCur = root;
p = i;
v = 0;
for (; ;) {
if (!(tblCur = tblCur[content.charAt(p++)])) {
i++;
break;
}
//找到匹配敏感字
if (tblCur.end)
v = p;
}
//最大匹配
if (v){
arrMatch.push(i - 1, v);
i = v;
}
}
return arrMatch;
},
//标记敏感字
handle:function (strContent) {
var mid,arrMatch,strHTML,arrHTML = [],p = 0;
this.makeTree(function (data) {
arrMatch = filterWord.searchWords(strContent,data);
for (var i = 0, n = arrMatch.length; i < n; i += 2) {
mid = arrMatch[i];
arrHTML.push(strContent.substring(p, mid),
"<em>",
strContent.substring(mid, p = arrMatch[i + 1]),
"</em>");
}
arrHTML.push(strContent.substring(p));
strHTML = arrHTML.join("").replace(/\n/g, "<br>");
console.log(strHTML);
});
}
};
使用方式:
filterWord.handle("徐航撒飒飒阿萨飒飒刘孝朋啊啊撒飒飒")
js敏感词过滤的更多相关文章
- js 敏感词过滤
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...
- 敏感词过滤,js封装class选择器:
敏感词过滤: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- Jsp敏感词过滤
Jsp敏感词过滤 大部分论坛.网站等,为了方便管理,都进行了关于敏感词的设定. 在多数网站,敏感词一般是指带有敏感政治倾向(或反执政党倾向).暴力倾向.不健康色彩的词或不文明语,也有一些网站根据自身实 ...
- 基于DFA算法、RegExp对象和vee-validate实现前端敏感词过滤
面临敏感词过滤的问题,最简单的方案就是对要检测的文本,遍历所有敏感词,逐个检测输入的文本是否包含指定的敏感词. 很明显上面这种实现方法的检测时间会随着敏感词库数量的增加而线性增加.系统会因此面临性能和 ...
- java实现敏感词过滤(DFA算法)
小Alan在最近的开发中遇到了敏感词过滤,便去网上查阅了很多敏感词过滤的资料,在这里也和大家分享一下自己的理解. 敏感词过滤应该是不用给大家过多的解释吧?讲白了就是你在项目中输入某些字(比如输入xxo ...
- 用php实现一个敏感词过滤功能
周末空余时间撸了一个敏感词过滤功能,下边记录下实现过程. 敏感词,一方面是你懂的,另一方面是我们自己可能也要过滤一些人身攻击或者广告信息等,具体词库可以google下,有很多. 过滤敏感词,使用简单的 ...
- 浅析敏感词过滤算法(C++)
为了提高查找效率,这里将敏感词用树形结构存储,每个节点有一个map成员,其映射关系为一个string对应一个TreeNode. STL::map是按照operator<比较判断元素是否相同,以及 ...
- Java实现敏感词过滤
敏感词.文字过滤是一个网站必不可少的功能,如何设计一个好的.高效的过滤算法是非常有必要的.前段时间我一个朋友(马上毕业,接触编程不久)要我帮他看一个文字过滤的东西,它说检索效率非常慢.我把它程序拿过来 ...
- php敏感词过滤
在项目开发中发现有个同事在做敏感词过滤的时候用循环在判断,其实是不用这样做的,用php的数组函数和字符串函数即可实现 function filterNGWords($string) { $badwor ...
随机推荐
- Java正则表达式例子汇总
1.过滤特殊字符 package com.sheepmu.text; /* * @author sheepmu */ public class HWCompetition { public stati ...
- RH033读书笔记(4)-Lab 5 File Permissions
Lab 5 File Permissions Sequence 1: Determining File Permissions 1. What is the symbolic representati ...
- 智能家居DIY
近期智能家居比較火,将房子简单改造下,也算体验智能家居. 本文解说的是用无线的方式,长处是:不用改造现有线路,直接安装模块就可以实现想要的功能,花的钱也较少,共六百左右 =============== ...
- LeanCloud获取最近会话列表和获取最后一条聊天记录
最近公司有项目需要集成IM聊天功能,领导要求用LeanCloud集成,搞不出来就要背包滚蛋啊,没办法只能硬着头皮搞了. 刚拿到官方提供的demo感觉:嗯,不错.图片语音啥的都有了,但尼玛这还不够啊,还 ...
- MVC5+EF6 入门完整教程 总目录
本系列文章会从一个主干开始,逐渐深入,初步规划30篇.初级10篇,中级10篇,综合项目实战10篇 初级10篇 MVC5+EF6 入门完整教程10:多对多关联表更新&使用原生SQL@201505 ...
- HDU 4067 Random Maze
意甲冠军: 一个"随机图"它被定义为具有以下性质如: 一个入口和一个出口 有向图 对于入口 出度比入度大1 对于出口 入度比出度大1 对于其它点 入度等于出度 现给出一幅有向 ...
- String构造函数originalValue.length>size 它发生
最近观看Jdk6于String源代码被发现String这种施工方法有.源内容如下面: public String(String original) { int size = original.coun ...
- .NET MVC学习笔记(一)
看了些关于MVC的资料,做一些MVC的笔记. 分解关注点 在MVC世界里有个很重要的观念--"分解关注点"(Separation of Concerns),指的是:当你进行软件开发 ...
- 第七章——DMVs和DMFs(4)——用DMV和DMF监控磁盘IO
原文:第七章--DMVs和DMFs(4)--用DMV和DMF监控磁盘IO 前言: 本文为本系列最后一篇,作为DBA,你必须经常关注磁盘的I/O问题,一旦出现问题,要尽快分析出是什么问题.SQLServ ...
- 基本shell编程【3】- 常用的工具awk\sed\sort\uniq\od(转)
awk awk是个很好用的东西,大量使用在linux系统分析的结果展示处理上.并且可以使用管道, input | awk '' | output 1.首先要知道形式 awk 'command' fi ...