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=" ...
随机推荐
- JS如何实现继承?
JS的继承是基于JS类的基础上的一种代码复用机制.换言之,有了代码,我们就不需要复制之前写好的方法,只要通过简捷的方式 复用之前自己写的或同事写的代码.比如一个弹出层,我们需要在上面做一些修改.同事写 ...
- 引用类型前需要加ref?
方法的参数前加ref代表的是传的参数的地址,值类型前加ref的作用相当于把这个值类型当成引用类型在用,那引用类型作为参数有一种情况也需要加ref,不然得到的值会有差. 不加ref: class Pro ...
- window 关机
schtasks /create /tn "关机" /tr "shutdown /s" /sc once /st 20:30
- DRF框架(九)——drf偏移分页组件、drf游标分页组件(了解)、自定义过滤器、过滤器插件django-filter
drf偏移分页组件 paginations.py from rest_framework.pagination import LimitOffsetPagination class MyLimitOf ...
- go开发环境
1.go 下载地址 https://studygolang.com/dl 根据操作系统 下载相应的安装包 2.设置环境变量 goroot gopath path 增加%goroot%\bin 3.开发 ...
- postgresql学习之安装篇
---恢复内容开始--- 安装方法: 1.可以使用操作系统自带的安装源 2.可以使用官网下载的源码进行安装 3.可以使用编译好的包入.run格式的安装包安装(本文使用的是这种安装方法,下载地址http ...
- Django开发简单博客流程
什么是Django? Django是一个基于python的高级web开发框架 它能够让开发人员进行高效且快速的开发 高度集成(不用自己造轮子), 免费并且开源 当前路径创建工程 django-admi ...
- Linux 6 修改ssh默认远程端口号
linux 默认的ssh远程端口是22,有时默认端口会遭到别有用心的人们扫描或攻击,为了时我们的系统更加安全那就需要修改远程端口号 操作步骤:1.修改ssh_config配置文件 vim /etc/s ...
- DotNet Core 2.2 MVC Razor 页面编译为 View.dll 文件的解决方法
使用文本文件编辑器打开项目文件,找到: <PropertyGroup> <TargetFramework>netcoreapp2.0</TargetFramewo ...
- 常见的python练习题
1.冒泡排序 def bubble_sort(lists): len_list=len(lists) for i in range(len_list): for j in range(len_list ...