ucenter中詞語過濾原理分析

字號:


    本文分析了ucenter中詞語過濾原理。分享給大家供大家參考,具體如下:
    過濾詞語表:
    名單
    組建緩存數(shù)據(jù):
    //private
    function _get_badwords() {
      $data = $this->db->fetch_all("SELECT * FROM ".UC_DBTABLEPRE."badwords");
      $return = array();
      if(is_array($data)) {
        foreach($data as $k => $v) {
          $return['findpattern'][$k] = $v['findpattern'];
          $return['replace'][$k] = $v['replacement'];
        }
      }
      return $return;
    }
    調(diào)用方法:
    $_CACHE['badwords'] = $this->base->cache('badwords');
    if($_CACHE['badwords']['findpattern']) {
      $subject = @preg_replace($_CACHE['badwords']['findpattern'], $_CACHE['badwords']['replace'], $subject);
      $message = @preg_replace($_CACHE['badwords']['findpattern'], $_CACHE['badwords']['replace'], $message);
    }
    preg_replace() 的每個參數(shù)(除了 limit)都可以是一個數(shù)組。如果 pattern 和 replacement 都是數(shù)組,將以其鍵名在數(shù)組中出現(xiàn)的順序來進(jìn)行處理。這不一定和索引的數(shù)字順序相同。如果使用索引來標(biāo)識哪個 pattern 將被哪個 replacement 來替換,應(yīng)該在調(diào)用 preg_replace() 之前用 ksort() 對數(shù)組進(jìn)行排序。
    希望本文所述對大家PHP程序設(shè)計有所幫助。