首頁  >  文章  >  後端開發  >  ucenter中詞語濾波原理詳解

ucenter中詞語濾波原理詳解

*文
*文原創
2017-12-29 18:15:401613瀏覽

本文主要介紹了ucenter中詞語過濾原理,結合實例形式分析了ucenter中詞語的相關sql字段定義與過濾功能的實現方法,涉及php正則替換及字符串與數組的相關操作技巧,需要的朋友可以參考下。希望對大家有幫助。

本文分析了ucenter中詞語濾波原理。分享給大家供大家參考,具體如下:

過濾詞語表:

id admin find replacement findpattern
1 UCenterAdminist 訪問 /訪問/is
2 #UCenterAdminist 4655 45 /4655/is
3 UCenterAdminist fdsaf dfsa #/fdsaf /is
4 UCenterAdminist #有機會 #在 /有機會/is

組成快取資料:

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

呼叫方法:

$_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() 的每個參數(除了limit)可以是一個陣列。如果 pattern 和 replacement 都是數組,將以其鍵名在數組中出現的順序來進行處理。這不一定和索引的數字順序相同。如果使用索引來識別哪個 pattern 會被哪個 replacement 來替換,應該在呼叫 preg_replace() 之前用 ksort() 對數組進行排序。

相關推薦:

PHP產生基於文字的摩斯電碼

php文字取代指定次數

php處理文字文件重複行

#

以上是ucenter中詞語濾波原理詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn