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 ...
随机推荐
- iframe页面控制父页面跳转
<script> window.onload=function(){ window.location.href="http://www.baidu.com"; ...
- 管理Android通信录
Android提供了Contacts应用程序来管理联系人,并且Android系统还为联系人管理提供了ContentProvider,这就同意其他应用程序以ContentResolver来管理联系人数据 ...
- 【BZOJ1014】【JSOI2008】火星人prefix Splay处理区间,hash+dichotomy(二分)check出解
题意不赘述了,太清晰了. 说题解:首先依据原字符串建立SPT.首尾建议多加一个空白字符. 给一个树构图,依照平衡树的前后大小顺序性质能够使它们始终维持为一个序列,而且能够通过rank找到序列的第k个. ...
- SNMP WINDOWS系统的命令行工具下载
SNMP windows系统的命令行工具snmputil.exe下载链接:请点击
- Akka.NET是Java/Scala 流行框架Akka的一个 .NET 开源移植
Akka.NET v1.0 已发布,支持Mono Akka.NET 是Java/Scala 流行框架Akka的一个 .NET 开源移植.可用于构建高并发,分布式和容错事件驱动的应用在 .NET 和 M ...
- ASP.NET2.0组件控件开发视频 初体验
原文:ASP.NET2.0组件控件开发视频 初体验 ASP.NET2.0组件控件开发视频 初体验 录了视频,质量不是很好,大家体验下.我会重新录制的 如果不清楚,可以看看http://v.youku. ...
- 一切从编辑器说起:web前端代码编辑器
俗话说:工欲善其事,必先利其器. 工欲善其事必先利其器.谓工匠想要使他的工作做好,一定要先让工具锋利.比喻要做好一件事,准备工作非常重要. 前端写代码也是一样,需要一个好的适合自己的代码编辑器. 我想 ...
- 什么场景Hbase
Hbase不太复杂,但适合于存储大量的数据资料.因为是商城系统:用户.商品.订单,店,卖家,这些数据是不适合复杂的关系Hbase. 有一个非常大的数据量订购,并经常来计算.只考虑存款订单Hbase. ...
- NBA球员 ESPN前20排名:詹姆斯再居榜首
2014年 ESPN球员实力最后排名 没想到 保罗-乔治没有上榜.之前预測的火箭两大明星排名落后了,杜兰特排到第8有点出乎意料. 戴维斯升得那么快有点出乎意料,一个球队拥有两位排前十位的球队:骑士,快 ...
- ORA-01791: not a SELECTed expression 一种是不 bug 的 bug!
[ora11@lixora ~]$ !sql sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on Wed Aug 27 09: ...