檢測敏感詞的 PHP 擴充套件

2021-08-30 23:16:36 字數 1359 閱讀 5581

敏感詞過濾是我朝程式設計師必須具備的一種特殊技能,隨著敏感詞越來越多,是時候寫個擴充套件來快速的進行敏感詞檢測了

使用說明

1. 安裝 libdatrie

tar zxf libdatrie-0.2.4.tar.gz

cd libdatrie-0.2.4

./configure --prefix=/usr/local

make

make install

2. 安裝 trie_filter 擴充套件

tar zxf trie_filter-1.0.0.tar.gz

cd trie_filter-1.0.0

phpize

./configure --with-php-config=/path/to/php-config

make

make install

記得修改你的 php.ini 檔案,啟用 trie_filter 擴充套件。extension=trie_filter.so

3. 生成詞典預處理工具(***.c 在 trie_filter-1.0.0 裡面)

gcc -o *** ***.c -ldatrie

4. 生成敏感詞詞典

./*** txt_file_path dict_file_path

5. 使用擴充套件

擴充套件介面很簡單,只有兩個函式:

1) trie_filter_load($path_to_dict)

用來載入詞典,成功返回乙個 trie_filter 資源控制代碼,失敗返回 null

2) trie_filter_search($trie, $text)

用來檢測一段文字中是否含有詞典中定義的敏感詞,$trie 是上乙個函式返回的 trie filter 控制代碼,$text 是欲檢測的文字

如果檢測到敏感詞則返回乙個陣列,陣列第乙個元素指出檢測到的敏感詞在 $text 中的偏移量,第二個元素指出該敏感詞的長度(bytes)

如果沒有檢測到敏感詞,則返回乙個空陣列

擴充套件的速度怎麼樣

乙個字,很快!擴充套件的檢測演算法基於 double array trie tree,查詢單一關鍵字的時間複雜度為 o(1),查詢整段文字的時間複雜度為 o(n),n 為文字的長度,而且檢測的速度不會因為敏感詞的增加而降低。

注意事項

1. 擴充套件把詞典和要檢測的文字都當做平凡的位元組流處理,因此可以無視字符集的問題。但需要注意的是詞典的編碼需要和檢測文字的編碼一致,例如詞典為 utf-8 編碼而你需要檢測的文字為 gbk 編碼,這就要求你在呼叫 trie_filter_search() 函式之前通過 iconv 或者 mb_*** 函式轉換一下編碼

2. 目前只在 linux + php-5.2 環境下測試通過,不支援 windows,也沒有支援的計畫

php敏感詞過濾

1 簡單敏感詞過濾 badword array 張三 張三丰 張三丰田 badword1 array combine badword,array fill 0,count badword bb 我今天開著張三丰田上班 str strtr bb,badword1 echo str 2 使用php元件 ...

mysql 敏感詞 PHP實現的敏感詞過濾方法示例

1 敏感詞過濾方法 todo 敏感詞過濾,返回結果 param array list 定義敏感詞一維陣列 param string string 要過濾的內容 return string log 處理結果 function sensitive list,string if count 0 else ...

PHP實現敏感詞過濾

為了構建良好的網路環境以及為了大家健康的上網。編不下去了 反正你知道敏感詞過濾一定是要有的,如果沒有這東西有關部門不找你喝茶哦!壞笑 壞笑 廢話不多說指尖上乾貨 fake file get contents words.txt 讀取關鍵字文字資訊 這個文字就是敏感詞的文字網上都有 最好選擇最新最全的...