设为首页 收藏本站
查看: 1118|回复: 0

[经验分享] php敏感词过滤

[复制链接]

尚未签到

发表于 2015-8-31 11:14:47 | 显示全部楼层 |阅读模式
  敏感词过滤,即在发布文章,微博等内容时,将指导的敏感词替换为指定字符的过程。
  废话不多说,我把最近写的一个demo摆在这里,我是将敏感词存放在文本文件,再加载到缓存里面,避免频繁打开io耗时,至于需要放在哪里根据具体情况而定,分享一下,看了过后,有更好的方法请分享一下



<?php
/**
* Created by JetBrains PhpStorm.
* User: lsl
* Date: 13-8-28
* Time: 下午2:58
* 敏感词过滤工具类
* 使用方法
* 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
* User: lsl
*/
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;
}
}
  关键词:



哈哈,我想贴在这里的,但是被cnblogs禁止了,把路径贴这里,去下载吧
http://files.cnblogs.com/lsl8966/word.zip

  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-106744-1-1.html 上篇帖子: [incomplete]Memcached Element and ElementList auto version control [占位] 下篇帖子: CentOS6.4最小化安装部署MemAdmin
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表