ホームページ >バックエンド開発 >PHPチュートリアル >センシティブな単語のフィルタリング

センシティブな単語のフィルタリング

WBOY
WBOYオリジナル
2016-06-23 14:39:13797ブラウズ

ユーザーが

$str="输入内容123";

と入力して abc.txt をダウンロードすると、内容は約 1,000 個の項目です
坏蛋|1火枪|1超级大坏蛋|1....


この txt ファイルを使用して $str1 を確認およびフィルタリングする方法 効率を高めたい場合は、アドバイスをお願いします


ディスカッションに返信 (解決済みの解決策)

効率 バッチ読み取りとフィルタリング..

abc.txt からトライ ツリーを構築し、それを照合します
アルゴリズムはエッセンス領域にあります

からトライ ツリーを構築しますabc.txt を検索して、それと一致させます
アルゴリズム エッセンスエリアのモデレーターさん、こんにちは。投稿がクラスであるのを見ましたが、それを呼び出すにはどうすればよいですか?
使い方がわかりません〜 なんて悲劇でしょう、詳しく教えてください、ありがとうございます
また、ダウンロードしたファイルの各行末に「|1」が付いていますが、なぜ使用されているのでしょうか?

すべての |1 を置き換えます。これは他の人のものです。 物にはそれぞれの用途があります。

すべての |1 を置き換えます。他人のものには独自の用途があります。
答えてくれてありがとう、私はそれを一致させる方法がまだわかりません。 質問する前に、それを一致させるには一行ずつ読まなければならないことを知っていました。
魚を教えてください。私はまだ概念を理解していません~

http://bbs.csdn.net/topics/390221822 の ttrie クラスを例に挙げてみましょう
明らかにあなたのニーズを満たしています
配列を文字列に連結するだけです。結果を出力するとき

キーワードを強調表示したい場合は、これを行うことができます
実際、魚はあなたに与えられているので、自分で行う方が良いです

インスタンス化されたオブジェクトを再利用するには、以下も追加する必要がありますデータ ポインターを再初期化するために match メソッドの先頭で

trie = new TTrie;foreach(file('abc.txt') as $r) $trie->set(strtok($r, '|'));$s =<<< TXT输入内容坏蛋123TXT;//仅识别print_r($trie->match($s));/* 得Array(    [0] => 输入内容    [1] => 坏蛋    [2] => 123)*///去掉字典字$trie->savematch = 0;print_r($trie->match($s));/* 得Array(    [0] => 输入内容    [1] => 123)*/
を実行します

モデレーターはとても素晴らしいです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。