機密性の高い単語を検出するための PHP 拡張機能
機密性の高い単語のフィルタリングは、プログラマが持つ必要のある特別なスキルです。機密性の高い単語が増えているため、機密性の高い単語を迅速に検出するための拡張機能を作成します。
使用説明
1 。
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
trie_filter 拡張機能を有効にするために php.ini ファイルを忘れずに変更してください。 extension=trie_filter.so
3. 辞書前処理ツールの生成 (dpp.c は trie_filter-1.0.0 にあります)
gcc -O dpp dpp.c -ldatrie
4. 機密単語辞書を生成します
まず、検出する機密単語をテキスト ファイルに 1 行に 1 つずつ書き込む必要があります。次に、前の手順で生成した dpp プログラムを使用してこのテキストを処理します。 Dictionary を生成するファイル
./dpp txt_file_path dict_file_path
5. 拡張機能の使用
拡張機能のインターフェイスは非常に単純で、関数は 2 つだけです:
1) trie_filter_load($path_to_dict) )
が使用されます。 辞書をロードして、成功したら Trie_Filter リソース ハンドルを返します。失敗した場合は NULL
を返します。 2) trie_filter_search($trie, $text)
は、テキストの一部に定義された機密用語が含まれているかどうかを検出するために使用されます。辞書では、$trie は関数によって返される前のトライ フィルター ハンドル、$text は検出されるテキストです
機密単語が検出された場合、配列の最初の要素はオフセットを示します。 $text で検出されたセンシティブな単語の要素と 2 番目の要素 この要素はセンシティブな単語の長さ (バイト) を示します
センシティブな単語が検出されなかった場合は、空の配列が返されます
拡張のスピードはどれくらいですか
一言、すぐに!拡張検出アルゴリズムは、Double Array Trie Tree に基づいています。単一のキーワードを検索する時間計算量は O(1)、テキスト全体を検索する時間計算量は O(n) です。n はテキストの長さです。センシティブワードの増加により検出速度が低下します。
注意事項
1. 拡張機能は、検出される辞書とテキストの両方を通常のバイト ストリームとして扱うため、文字セットは次のようになります。無視された問題。ただし、辞書のエンコードは、検出されたテキストのエンコードと一致している必要があることに注意してください。たとえば、辞書は UTF-8 エンコードされており、検出する必要があるテキストは GBK エンコードされているため、変換する必要があります。 trie_filter_search() 関数を呼び出す前に iconv または mb_xxx 関数を実行してください
2. 現在、Linux + php-5.2 環境でのみテストされており、サポートする予定はありません
。