php过滤敏感词实例代码
php過濾敏感詞實例代碼
<?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;?
? ????}?
? }?
總結
以上是生活随笔為你收集整理的php过滤敏感词实例代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: An Implementation of
- 下一篇: 敏感词过滤,PHP实现的Trie树