php过滤敏感词实例代码

新客网 XKER.COM 时间:2013-09-21 20:40:26  评论:
  1. <?php 
  2. /** 
  3.  * Created by JetBrains PhpStorm. 
  4.  * User: lsl 
  5.  * Date: 13-8-28 
  6.  * Time: 下午2:58 
  7.  * 敏感词过滤工具类 
  8.  * 使用方法 
  9.  * echo FilterTools::filterContent("你妈的我操一色狼杂种二山食物","*",DIR."config/word.txt",$GLOBALS["p_memcache"]["bad_words"]); 
  10.  */ 
  11.  
  12. class FilterTools { 
  13.     public static $keyword = array(); 
  14.     /** 
  15.      * 从文件中加载敏感词 
  16.      * @param $filename 
  17.      * @return array 
  18.      */ 
  19.     static function getBadWords($filename){ 
  20.         $file_handle = fopen($filename"r"); 
  21.         while (!feof($file_handle)) { 
  22.             $line = trim(fgets($file_handle)); 
  23.             array_push(self::$keyword,$line); 
  24.         } 
  25.         fclose($file_handle); 
  26.         return self::$keyword
  27.     } 
  28.  
  29.     /** 
  30.      * @param $content 待处理字符串 
  31.      * @param $target  替换后的字符 
  32.      * @param $filename  敏感词配置文件 
  33.      * @param $memconfig 缓存配置文件 
  34.      * @return 处理后的字符串 
  35.      */ 
  36.     static function filterContent($content,$target,$filename,$memconfig){ 
  37.         $mem = new BadWordsMemcache($filename,$memconfig); 
  38.         $keyword = $mem->getList(); 
  39.         if(count($keyword) == 0){ 
  40.             $keyword = self::getBadWords($filename); 
  41.         } 
  42.         return strtr($contentarray_combine$keywordarray_fill(0,count($keyword), $target))); 
  43.     } 
  44.  
  45.  
  46. /** 
  47.  * 敏感词缓存处理类 
  48.  * Class BadWordsMemcache 
  49.  * User: lsl 
  50.  */ 
  51. class BadWordsMemcache{ 
  52.     var $memcache
  53.     var $key
  54.     var $list
  55.     var $filename
  56.     function __construct($filename,$memconfig) { 
  57.         $this->filename = $filename
  58.         if(!class_exists("P_Memcache")){ 
  59.             require_once DIR."lib/memcache.class.php"
  60.         } 
  61.         $this->key = "bad_words"
  62.         $this->memcache = new P_Memcache(); 
  63.         $this->memcache->config = $memconfig
  64.         $this->memcache->connect(); 
  65.         print_r($this->memcache); 
  66.         $this->init(); 
  67.     } 
  68.     function __destruct() { 
  69.         $this->memcache->close(); 
  70.     } 
  71.  
  72.     /** 
  73.      * 初始化 
  74.      * @param bool $isReset 
  75.      */ 
  76.     function init($isReset = false){ 
  77.         $this->list = $this->memcache->get($this->key)?$this->memcache->get($this->key):array(); 
  78.         if(count($this->list)==0 || $isReset){ 
  79.             $this->list = filterTools::getBadWords($this->filename); 
  80.             $this->memcache->set($this->key, $this->list); 
  81.             $log_data = Log::formatData($this->list); 
  82.             Log::logWrite($log_data'bad.words','init'); 
  83.         } 
  84.     } 
  85.  
  86.     /** 
  87.      * 获取列表 
  88.      * @return mixed 
  89.      */ 
  90.     function getList(){ 
  91.         return $this->list; 
  92.     } 

如果您喜欢本文请分享给您的好友,谢谢!如想浏览更多更好的PHP教程内容,请登录:http://www.xker.com/edu/dev/2/index.html

相关内容标签:PHP教程
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)