php過濾敏感詞執行個體代碼

來源:互聯網
上載者:User

<?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; 
      } 
  } 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.