php过滤敏感词
<?php/** * 敏感词过滤工具类 * 使用方法 * echo FilterTools::filterContent("你妈的我操一色狼杂种二山食物","*",DIR."config/word.txt",$GLOBALS["p_memcache"]["bad_words"]); */class FilterTools { public static $keyword = array(); /** * 从文件中加载敏感词 * @param $filename * @return array */ static function getBadWords($filename){ $file_handle = fopen($filename, "r"); while (!feof($file_handle)) { $line = trim(fgets($file_handle)); array_push(self::$keyword,$line); } fclose($file_handle); return self::$keyword; } /** * @param $content 待处理字符串 * @param $target 替换后的字符 * @param $filename 敏感词配置文件 * @param $memconfig 缓存配置文件 * @return 处理后的字符串 */ static function filterContent($content,$target,$filename,$memconfig){ $mem = new BadWordsMemcache($filename,$memconfig); $keyword = $mem->getList(); if(count($keyword) == 0){ $keyword = self::getBadWords($filename); } return strtr($content, array_combine( $keyword, array_fill(0,count($keyword), $target))); }}/** * 敏感词缓存处理类 * Class BadWordsMemcache */class BadWordsMemcache{ var $memcache; var $key; var $list; var $filename; function __construct($filename,$memconfig) { $this->filename = $filename; if(!class_exists("P_Memcache")){ require_once DIR."lib/memcache.class.php"; } $this->key = "bad_words"; $this->memcache = new P_Memcache(); $this->memcache->config = $memconfig; $this->memcache->connect(); print_r($this->memcache); $this->init(); } function __destruct() { $this->memcache->close(); } /** * 初始化 * @param bool $isReset */ function init($isReset = false){ $this->list = $this->memcache->get($this->key)?$this->memcache->get($this->key):array(); if(count($this->list)==0 || $isReset){ $this->list = filterTools::getBadWords($this->filename); $this->memcache->set($this->key, $this->list); $log_data = Log::formatData($this->list); Log::logWrite($log_data, 'bad.words','init'); } } /** * 获取列表 * @return mixed */ function getList(){ return $this->list; }}php过滤敏感词的更多相关文章
- web前端js过滤敏感词
web前端js过滤敏感词 这里是用文本输入框还有文本域绑定了失去焦点事件,然后再遍历敏感词数组进行匹配和替换. var keywords=["阿扁","呵呵", ...
- (转)两种高效过滤敏感词算法--DFA算法和AC自动机算法
原文:https://blog.csdn.net/u013421629/article/details/83178970 一道bat面试题:快速替换10亿条标题中的5万个敏感词,有哪些解决思路? 有十 ...
- 【SpringBoot】前缀树 Trie 过滤敏感词
1.过滤敏感词 Spring Boot实践,开发社区核心功能 完成过滤敏感词 Trie 名称:Trie也叫做字典树.前缀树(Prefix Tree).单词查找树 特点:查找效率高,消耗内存大 应用:字 ...
- SpringBoot开发十四-过滤敏感词
项目需求-过滤敏感词 利用 Tire 树实现过滤敏感词 定义前缀树,根据敏感词初始化前缀树,编写过滤敏感词的方法 代码实现 我们首先把敏感词存到一个文件 sensitive.txt: 赌博 嫖娼 吸毒 ...
- 过滤敏感词工具类SensitiveFilter
网上过滤敏感词工具类有的存在挺多bug,这是我自己改用的过滤敏感词工具类,目前来说没啥bug,如果有bug欢迎在评论指出 使用前缀树 Trie 实现的过滤敏感词,树节点用静态内部类表示了,都写在一个 ...
- [转]Filter实现处理中文乱码,转义html标签,过滤敏感词
原文地址:http://www.cnblogs.com/xdp-gacl/p/3952405.html 在filter中可以得到代表用户请求和响应的request.response对象,因此在编程中可 ...
- js 过滤敏感词 ,可将带有标点符号的敏感词过滤掉
function transSensitive(content) { // var Sensitive = H.getStorage("Sensitive");//敏感词数组 va ...
- PHP 扩展 trie-tree, swoole过滤敏感词方案
在一些app,web中评论以及一些文章会看到一些*等,除了特定的不显示外,我们会把用户输入的一些敏感字符做处理,具体显示为*还是其他字符按照业务区实现. 下面简单介绍下业务处理. 原文地址:小时刻个人 ...
- js 过滤敏感词
<html> <head> <title>Bad Words Example</title> <script type=" ...
随机推荐
- LeetCode 1071. 字符串的最大公因子(Greatest Common Divisor of Strings) 45
1071. 字符串的最大公因子 1071. Greatest Common Divisor of Strings 题目描述 对于字符串 S 和 T,只有在 S = T + ... + T(T 与自身连 ...
- C++ Primer中文第四版
C++ Primer中文第四版 在简书上发现有挂羊头卖狗肉的,发的plus,而且压缩包还得付钱获取密码,我直接去github搜到了第四版,在此分享一下. 格式:pdf 书签目录:有 下载地址: ...
- 删除elasticsearch 30天前的所有索引
我的索引格式为 xxx-xxx-xxx-2019.06.27 xxx-xxxx-2019.06.27 脚本思路: 获取目前 es上所有索引,以日期进行拆分,然后用索引时间对比一个月前的日期,日期小于一 ...
- kafka学习笔记(二)——基础入门
1.集群规划 从官网下载jar包 http://kafka.apache.org/downloads.html,我选择的是kafka_2.11-0.11.0.0.tgz版本 规划一下集群环境先~ ha ...
- 3.将模型添加到 ASP.NET Core MVC 应用
添加数据模型类 右键单击 Models 文件夹,然后单击“添加” > “类”. 将类命名“Movie”.向 Movie 类添加以下属性: using System;using System.Co ...
- C语言--线性表
#include<stdio.h>#include<stdlib.h>#include<string.h>#define LIST_SIZE 100#define ...
- C#类类型
一.类和对象 假设我开了一家烤鱼店,每当客人来点餐时,我就会用笔和纸记录这笔订单,并计算出每单的价格.以下是记录的订单: 单号:00001种类:清江鱼口味:香辣配菜:豆腐价格:140元-------- ...
- C# vb .net实现拉伸效果滤镜
在.net中,如何简单快捷地实现Photoshop滤镜组中的拉伸效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第一步 ...
- K8S 中的容器编排和应用编排
众所周知,Kubernetes 是一个容器编排平台,它有非常丰富的原始的 API 来支持容器编排,但是对于用户来说更加关心的是一个应用的编排,包含多容器和服务的组合,管理它们之间的依赖关系,以及如何管 ...
- sublime 快速编写代码技巧
在sublime上装了Emmet插件后,我们就可以利用以下技巧快速编写代码 1.自动生成html头文件 html:5 或!:用于HTML5文档类型 html:xt:用于XHTML过渡文档类型 html ...