php返回当前字符串把所有敏感词变红,PHP 实现敏感词 / 停止词 过滤(附敏感词库)...
敏感词、文字过滤是一个网站必不可少的功能,如何设计一个好的、高效的过滤算法是非常有必要的。在实现敏感词过滤的算法中,我们必须要减少运算,而 DFA 在 DFA 算法中几乎没有什么计算,有的只是状态的转换。所以想更高效的进行敏感词的过滤,需要使用 DFA 算法。
整理过滤函数代码如下:/**
* Notes: [DoFilterWords 过滤字符中敏感词]
* Author HeZe
* Date 2021/1/6 14:48
* @param $list 过滤词一维数组 ['小明', '小红', '大白', '小白', '小黑', 'me', 'you'];
* @param $string 输入文字 likeyou小白喜欢小黑爱着的大黄
* @return string 过滤后文字 like**喜欢*爱着的大黄
*/
function DoFilterWords($list, $string, $symbol = '*')
{
$count = 0; // 违规词的个数
$sensitiveWord = ''; // 违规词
$stringAfter = $string; // 替换后的内容
$pattern = "/".implode("|",$list)."/i"; // 定义正则表达式
if(preg_match_all($pattern, $string, $matches)) { // 匹配到了结果
$patternList = $matches[0]; // 匹配到的数组
$count = count($patternList);
$sensitiveWord = implode(',', $patternList); // 敏感词数组转字符串
//把匹配到的数组进行合并,替换使用
$replaceArray = array_combine($patternList,array_fill(0, count($patternList), $symbol));
$stringAfter = strtr($string, $replaceArray); //结果替换
}
$log = "原句为 [ {$string} ]
";
if($count==0) {
$log .= "暂未匹配到敏感词!";
} else {
$log .= "匹配到 [ {$count} ]个敏感词:[ {$sensitiveWord} ]
"."替换后为:[ {$stringAfter} ]";
}
return $log;
}
使用方法// 过滤词库
$list = ['小明', '小红', '大白', '小白', '小黑', 'me', 'you'];
// 输入文字
$string = "likeyou小白喜欢小黑爱着的大黄";
// 调用函数
$res = DoFilterWords($list , $string , '*');
echo $res;
// 输出结果
原句为 [ likeyou小白喜欢小黑爱着的大黄 ]
匹配到 [ 3 ]个敏感词:[ you,小白,小黑 ]
替换后为:[ like**喜欢*爱着的大黄 ]
最后 附上敏感词、停止词 词库:https://gitee.com/zehe/stopwords
转载请注明出处~~~~
php返回当前字符串把所有敏感词变红,PHP 实现敏感词 / 停止词 过滤(附敏感词库)...相关推荐
- 利用ajax从jsp中返回的字符串时出现回车符号解决办法
问题背景:通过ajax来实现检测用户名,若用户名已存在,则提示已存在并且清空文本框:若不存在则提示可用.在checkname.jsp中写的时候,通过out.write();返回提示,在index.js ...
- 根据传入url请求,返回json字符串
/** * 根据传入url请求,返回json字符串 * @param url * @return * @throws UnsupportedEncodingException */ public st ...
- Jquery 将后台返回的字符串转换成Json格式的数据
//code by:博客园-曹永思 第一步:将DataTable转换成 Json格式的数据 方法 一 View Code /// <summary>/// DataTable转成Json格 ...
- python struct.calcsize()函数(返回格式字符串fmt描述的结构的字节大小)
from struct.py def calcsize(fmt): # known case of _struct.calcsize"""calcsize(fmt) -& ...
- 解决springmvc在单纯返回一个字符串对象时所出现的乱码情况(极速版)
使用springmvc框架开发了这么长时间,之前都是直接返回jsp页面,乱码情况都是通过配置和手动编解码来解决,但是今天突然返回一段单纯的字符串时,发现中文乱码情况解决不了了,下面就给各位分享一下如何 ...
- Java黑皮书课后题第6章:6.37(格式化整数)编写一个测试程序,提示用户输入一个数字以及宽度,显示通过调用format方法返回的字符串
6.37(格式化整数)编写一个测试程序,提示用户输入一个数字以及宽度,显示通过调用format方法返回的字符串 题目 题目描述 破题 代码 运行示例 题目 题目描述 6.37(格式化整数) 使用下面的 ...
- 传入一个中文字符串,返回一个字符串中的中文拼音
/** * @param 传入一个中文字符串 * @return 返回一个字符串中的中文拼音 */ private String getNameNum(Strin ...
- JAVA传入一个字符串,返回一个字符串中的大写字母
/** * * @param 传入一个字符串 * @return 返回一个字符串中的大写字母 */ private static String str ...
- strspn php,php返回在字符串中包含 charlist 参数中指定的字符数目的函数strspn()
实例 返回在字符串 "Hello world!" 中包含字符 "kHlleo" 的数目:<?php echo strspn("Hello wor ...
最新文章
- 【238】◀▶IEW-Unit03
- 对象存储、块存储、文件存储的区别
- Quzrtz 使用oracle集群无法正常启动问题解决
- 基于USR-WiFi模块的 ESP32,ESP8266 Thonny调试器
- java 打包web 项目
- Vista操作系统评估参考资料
- 2018先知白帽大会 | 议题解读
- UIDynamicBehavior的行为类翻译
- private static final long serialVersionUID = 1L;详解
- 基于PCA和贝叶斯决策对CIFAR-10数据图像分类
- php7扩展开发教程,Laravel 7 扩展开发教程
- [Web Chart系列之一]Web端图形绘制SVG,VML, HTML5 Canvas 技术比较
- Ubuntu学习(应用集合、命令行以及遇到的问题)
- Tricks(二十七)—— 如何在不使用 np.argsort 的情况下获得排序后元素的下标
- selenium——鼠标事件
- DIPS工具实现解释
- OSI常用网络协议(七层)
- np.ones(),np.zeros(), np.empty(),np.full(),np.ones_like() 基本用法
- 电阻式触摸屏UI设计
- 你的独立思考能力正在慢慢退化
热门文章
- 2000亿合作背后:苏宁易购如何成为海尔“兄弟”
- 快速听懂英文数字和中英文数字转换教程
- 我的计算机课1000字,电脑课讲话反思1000字(共9篇).docx
- java class获取type_父类通过泛型获得子类Class类型 以及Type体系
- 香港《财资》2018年金融科技奖 金融壹账通、花旗银行、招商银行等登榜
- 卸载DirectX9.8
- [BUUCTF-pwn] wdb_2020_1st_boom1
- Widows 注册表
- 研招网准考证只能电脑下载吗
- Keras学习笔记11——keras.applications