程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php過濾敏感詞實例代碼

php過濾敏感詞實例代碼

編輯:關於PHP編程

    <?php
      /** 
       * Created by JetBrains PhpStorm. 
       * User: lsl 
       * Date: 13-8-28 
       * Time: 下午2:58 
       * 敏感詞過濾工具類 
       * 使用方法 
       * echo FilterTools::filterContent(&quot;你媽的我操一色狼雜種二山食物&quot;,&quot;*&quot;,DIR.&quot;config/word.txt&quot;,$GLOBALS[&quot;p_memcache&quot;][&quot;bad_words&quot;]); 
       */ 
       
      class FilterTools { 
          public static $keyword = array(); 
          /** 
           * 從文件中加載敏感詞 
           * @param $filename 
           * @return array 
           */ 
          static function getBadWords($filename){ 
              $file_handle = fopen($filename, &quot;r&quot;); 
              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-&gt;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-&gt;filename = $filename; 
              if(!class_exists(&quot;P_Memcache&quot;)){ 
                  require_once DIR.&quot;lib/memcache.class.php&quot;; 
              } 
              $this-&gt;key = &quot;bad_words&quot;; 
              $this-&gt;memcache = new P_Memcache(); 
              $this-&gt;memcache-&gt;config = $memconfig; 
              $this-&gt;memcache-&gt;connect(); 
              print_r($this-&gt;memcache); 
              $this-&gt;init(); 
          } 
          function __destruct() { 
              $this-&gt;memcache-&gt;close(); 
          } 
       
          /** 
           * 初始化 
           * @param bool $isReset 
           */ 
          function init($isReset = false){ 
              $this-&gt;list = $this-&gt;memcache-&gt;get($this-&gt;key)?$this-&gt;memcache-&gt;get($this-&gt;key):array(); 
              if(count($this-&gt;list)==0 || $isReset){ 
                  $this-&gt;list = filterTools::getBadWords($this-&gt;filename); 
                  $this-&gt;memcache-&gt;set($this-&gt;key, $this-&gt;list); 
                  $log_data = Log::formatData($this-&gt;list); 
                  Log::logWrite($log_data, 'bad.words','init'); 
              } 
          } 
       
          /** 
           * 獲取列表 
           * @return mixed 
           */ 
          function getList(){ 
              return $this-&gt;list; 
          } 
      } 

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved