过滤特定词的php实例代码

新客网 XKER.COM 时间:2013-09-26 13:19:10  评论:
  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(&quot;你妈的我操一色狼杂种二山食物&quot;,&quot;*&quot;,DIR.&quot;config/word.txt&quot;,$GLOBALS[&quot;p_memcache&quot;][&quot;bad_words&quot;]);   
  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, &quot;r&quot;);   
  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-&gt;getList();   
  39.           if(count($keyword) == 0){   
  40.               $keyword = self::getBadWords($filename);   
  41.           }   
  42.           return strtr($content, array_combine( $keyword, array_fill(0,count($keyword), $target)));   
  43.       }   
  44.      
  45.   }   
  46.      
  47.   /**   
  48.    * 敏感词缓存处理类   
  49.    * Class BadWordsMemcache   
  50.    * User: lsl   
  51.    */   
  52.   class BadWordsMemcache{   
  53.       var $memcache;   
  54.       var $key;   
  55.       var $list;   
  56.       var $filename;   
  57.       function __construct($filename,$memconfig) {   
  58.           $this-&gt;filename = $filename;   
  59.           if(!class_exists(&quot;P_Memcache&quot;)){   
  60.               require_once DIR.&quot;lib/memcache.class.php&quot;;   
  61.           }   
  62.           $this-&gt;key = &quot;bad_words&quot;;   
  63.           $this-&gt;memcache = new P_Memcache();   
  64.           $this-&gt;memcache-&gt;config = $memconfig;   
  65.           $this-&gt;memcache-&gt;connect();   
  66.           print_r($this-&gt;memcache);   
  67.           $this-&gt;init();   
  68.       }   
  69.       function __destruct() {   
  70.           $this-&gt;memcache-&gt;close();   
  71.       }   
  72.      
  73.       /**   
  74.        * 初始化   
  75.        * @param bool $isReset   
  76.        */   
  77.       function init($isReset = false){   
  78.           $this-&gt;list = $this-&gt;memcache-&gt;get($this-&gt;key)?$this-&gt;memcache-&gt;get($this-&gt;key):array();   
  79.           if(count($this-&gt;list)==0 || $isReset){   
  80.               $this-&gt;list = filterTools::getBadWords($this-&gt;filename);   
  81.               $this-&gt;memcache-&gt;set($this-&gt;key, $this-&gt;list);   
  82.               $log_data = Log::formatData($this-&gt;list);   
  83.               Log::logWrite($log_data, 'bad.words','init');   
  84.           }   
  85.       }   
  86.      
  87.       /**   
  88.        * 获取列表   
  89.        * @return mixed   
  90.        */   
  91.       function getList(){   
  92.           return $this-&gt;list;   
  93.       }   
  94.   }  

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

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