直接在原型添加方法:

(function () {
/*
* 取消所有高亮
*/
CKEDITOR.editor.prototype.CancleSensitiveWordsHighlight = function () {
var regstrEpswh = '<span class="ep_ckeditor_sensitivewords" style="background-color:[^<>:]+[;]*">([^<>]+)<\\/span>';
var htmlEpswh = this.getData();
htmlEpswh = htmlEpswh.replace(eval("/" + regstrEpswh + "/ig"), "$1");
if (this.document != null)
this.document.getBody().setHtml(htmlEpswh);
return htmlEpswh;
}
/*
* epswhlwords 敏感词
* epswhligChar 敏感词中忽略的特殊字符
* epswhlcolor 高亮底色
*/
CKEDITOR.editor.prototype.SensitiveWordsHighlight = function (epswhlwords, epswhligChar, epswhlcolor) {
//空的字符串
if (typeof epswhlwords == "string" && !epswhlwords)
return;
//空数组
if (typeof epswhlwords == "object" && epswhlwords[0] == undefined)
return;
var htmlEpswh = this.getData();
//高亮模板
var highLighCOde = '<span class="ep_ckeditor_sensitivewords" style="background-color:{$color};">{$word}</span>';
if (!epswhlcolor)
epswhlcolor = "#ffff00";
highLighCOde = highLighCOde.replace("{$color}", epswhlcolor);
//如果内容中有高亮内容先进行清理
if (htmlEpswh.indexOf('ep_ckeditor_sensitivewords') > -1) {
htmlEpswh = this.CancleSensitiveWordsHighlight();
}
//重新高亮
var epswhlkeyWords = [];
if (typeof epswhlwords == "string")
epswhlkeyWords = epswhlwords.split(',');
else
epswhlkeyWords = epswhlwords;
//需要忽略的分隔符
if (epswhligChar && epswhligChar.length > 0) {
epswhligChar = epswhligChar.replace(/[<>&"]/g, function (c) { return { '<': '&lt;', '>': '&gt;', '&': '&amp;', '"': '&quot;' }[c]; });
epswhligChar = "[" + epswhligChar + "]*";
} else {
epswhligChar = '';
}
for (var i = 0; i < epswhlkeyWords.length; i++) {
var allkey = epswhlkeyWords[i].split('');
var regstr = allkey.join(epswhligChar);
regstr = "(" + regstr + ")";
var reg = eval("/" + regstr + "/ig");
var hcode = highLighCOde.replace("{$word}", "$1");
htmlEpswh = htmlEpswh.replace(reg, hcode);
}
//document 对象在源码模式无效,this.setData是重新加载,不是同步方法,不能使用
if (this.document!=null)
this.document.getBody().setHtml(htmlEpswh);
} })();

或者添加插件:

CKEDITOR.plugins.add('sensitivewordshighlight', {
init: function (editor) {
/*
* 取消所有高亮
*/
editor.CancleSensitiveWordsHighlight=function () {
var regstrEpswh = '<span class="ep_ckeditor_sensitivewords" style="background-color:[^<>:]+[;]*">([^<>]+)<\\/span>';
var htmlEpswh = this.getData();
htmlEpswh = htmlEpswh.replace(eval("/" + regstrEpswh + "/ig"), "$1");
if (this.document != null)
this.document.getBody().setHtml(htmlEpswh);
return htmlEpswh;
}
/*
* words 敏感词
* igChar 敏感词中忽略的特殊字符
* color 高亮底色
*/
editor.SensitiveWordsHighlight = function (epswhlwords, epswhligChar, epswhlcolor) {
//空的字符串
if (typeof epswhlwords == "string" && !epswhlwords)
return;
//空数组
if (typeof epswhlwords == "object" && epswhlwords[0] == undefined)
return;
var htmlEpswh = this.getData();
//高亮模板
var highLighCOde = '<span class="ep_ckeditor_sensitivewords" style="background-color:{$color};">{$word}</span>';
if (!epswhlcolor)
epswhlcolor = "#ffff00";
highLighCOde = highLighCOde.replace("{$color}", epswhlcolor);
//如果内容中有高亮内容先进行清理
if (htmlEpswh.indexOf('ep_ckeditor_sensitivewords') > -1) {
htmlEpswh = this.CancleSensitiveWordsHighlight();
}
//重新高亮
var epswhlkeyWords = [];
if (typeof epswhlwords == "string")
epswhlkeyWords = epswhlwords.split(',');
else
epswhlkeyWords = epswhlwords;
//需要忽略的分隔符
if (epswhligChar && epswhligChar.length > 0) {
epswhligChar = epswhligChar.replace(/[<>&"]/g, function (c) { return { '<': '&lt;', '>': '&gt;', '&': '&amp;', '"': '&quot;' }[c]; });
epswhligChar = "[" + epswhligChar + "]*";
} else {
epswhligChar = '';
}
for (var i = 0; i < epswhlkeyWords.length; i++) {
var allkey = epswhlkeyWords[i].split('');
var regstr = allkey.join(epswhligChar);
regstr = "(" + regstr + ")";
var reg = eval("/" + regstr + "/ig");
var hcode = highLighCOde.replace("{$word}", "$1");
htmlEpswh = htmlEpswh.replace(reg, hcode);
}
//document 对象在源码模式无效,this.setData是重新加载,不是同步方法,不能使用
if (this.document != null)
this.document.getBody().setHtml(htmlEpswh);
}
}
});

启用插件:

config.extraPlugins = "sensitivewordshighlight";

调用:

//设置
CKEDITOR.instances.MYCKDEMO.SensitiveWordsHighlight(["一二","哈哈"], "`~!@#$^&*()=|{}':;',\\[\\]\\.<>/?~!@#¥……&*()—|{}【】‘;:”“'。,、? ","#FFFF00");
//取消
CKEDITOR.instances.MYCKDEMO.CancleSensitiveWordsHighlight();

注意:ckeditor 中setData()方法要刷新iframe非同步方法,同时使用多次出现内容不按逻辑显示~,~

ckeditor 敏感词标记显示处理方法的更多相关文章

  1. PHP实现的敏感词过滤方法

    PHP实现的敏感词过滤方法,以下是一份过滤敏感词的编码.有需要可以参考参考. /** * @todo 敏感词过滤,返回结果 * @param array $list 定义敏感词一维数组 * @para ...

  2. 基于DFA敏感词查询的算法简析

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 项目中需要对敏感词做一个过滤,首先有几个方案可以选择: a.直 ...

  3. js检测文章敏感词

    在一些博客或者论坛中,文章中的敏感词需要显示出来和高亮显示起到提示用户的作用.这个功能实现的方法有很多,下面是js的实现方式. //将文章中匹配到的敏感词罗列出来 <span style=&qu ...

  4. JS采用ActiveXObject实现用户在提交表单时屏蔽敏感词的功能

    本例中敏感词ciku.txt放在C盘根目录下,采用的ActiveXObject插件获取本地文件内容.使用此插件不需网上下插件,直接用如下js代码即可. 浏览器需修改interner安全选项的级别,启用 ...

  5. 敏感词过滤和XML的创建

    今天我慢下来啦,因为这三天没有新的课程学习内容,自己仅仅看啦一些,这让我停下来栖息片刻:说说现在的生活,简单的进行着,每天要奔波着去上课,然后回来,每天都在想怎样学习这个小知识点,大脑也在想怎样解决程 ...

  6. [原创] Trie树 php 实现敏感词过滤

    目录 背景 简介 存储结构 PHP 其他语言 字符串分割 示例代码 php 优化 缓存字典树 常驻服务 参考文章 背景 项目中需要过滤用户发送的聊天文本, 由于敏感词有将近2W条, 如果用 str_r ...

  7. 基于DFA算法、RegExp对象和vee-validate实现前端敏感词过滤

    面临敏感词过滤的问题,最简单的方案就是对要检测的文本,遍历所有敏感词,逐个检测输入的文本是否包含指定的敏感词. 很明显上面这种实现方法的检测时间会随着敏感词库数量的增加而线性增加.系统会因此面临性能和 ...

  8. Java基础:String类详解,案例用户登录实现,案例手机号截取实现,案例敏感词替换实现;StringBuilder类详解,StringBuilder和String相互转换,附练习案例.

    1.API 1.1 API概述-帮助文档的使用 什么是API API (Application Programming Interface) :应用程序编程接口 java中的API 指的就是 JDK ...

  9. .Net 中两分钟集成敏感词组件

    现如今大部分服务都会有用户输入,为了服务的正常运行,很多时候不得不针对输入进行敏感词的检测.替换.如果人工做这样的工作,不仅效率低,成本也高.所以,先让代码去处理输入,成为了经济方便的途径.水弟在这里 ...

随机推荐

  1. PAT (Basic Level) 1004. 成绩排名 (20)

    读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为 第1行:正整数n 第2行:第1个学生的姓名 学号 成绩 第3行:第2个学生 ...

  2. BZOJ 3083 遥远的国度 树链剖分

    3083: 遥远的国度 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 797  Solved: 181[Submit][Status] Descrip ...

  3. dispatch_semaphore

    dispatch_semaphore 信号量基于计数器的一种多线程同步机制.在多个线程访问共有资源时候,会因为多线程的特性而引发数据出错的问题. dispatch_queue_t queue = di ...

  4. windows驱动开发推荐书籍

    [作者] 猪头三 个人网站 :http://www.x86asm.com/ [序言] 很多人都对驱动开发有兴趣,但往往找不到正确的学习方式.当然这跟驱动开发的本土化资料少有关系.大多学的驱动开发资料都 ...

  5. PuTTY 'modmul()' 函数缓冲区下溢漏洞(CVE-2013-4206)

    漏洞版本: PuTTY 0.52 - 0.63 漏洞描述: BUGTRAQ ID: 61645 CVE(CAN) ID: CVE-2013-4206 PuTTY是Windows和Unix平台上的PuT ...

  6. nodejs之日志管理

    开发一个项目时,可以通过控制台输出或者debug来获取到项目的运行信息.当项目上线时,我们就需要通过日志来分析.如同Java的log4j,nodejs中也有相关的log4js.使用过log4j的同学应 ...

  7. 初识DirectX和COM

    一.COM 1.什么是COM对象 一个COM对象事实上是一个或一套实现了大量接口的C++类 2.COM的优点 不用重新编译你的程序就能升级COM模块 3.COM概貌 4.COM对象的接口 QueryI ...

  8. Android项目开发全程(二)--Afinal用法简单介绍

    本篇博文接上篇的<Android项目开发全程(一)--创建工程>,主要介绍一下在本项目中用到的一个很重要的框架-Afinal,由于本系列博文重点是项目开发全程,所以在这里就先介绍一下本项目 ...

  9. leetcode shttps://oj.leetcode.com/problems/surrounded-regions/

    1.从外围搜索O,深度搜索出现了 Line 35: java.lang.StackOverflowError Last executed input: ["OOOOOOOOOOOOOOOOO ...

  10. iOS动态管理AutoLayout的约束NSLayoutConstraint

    除了使用Storyboard之外,也可以使用使用代码的方式,动态的向指定的UIView,添加约束. 例如有两个UILabel:someLabel,otherLabel 首先用代码实例化,两个控件 se ...