センシティブワードフィルタリングユーザーがを入力した場合 $str="输入内容123"; abc.txt をダウンロードしました。内容は約 1,000 項目あります 坏蛋|1 火枪|1 超级大坏蛋|1 .... この txt ファイルを使用して $str1 をチェックおよびフィルタリングする方法を効率的にしたい場合は、アドバイスをお願いします 共有先: もっと見る -----解決策--------http://bbs を使用します。 csdn.net/topics/390221822 の ttrie クラスが例です trie = new TTrie; foreach(file('abc.txt') as $r) $trie->set(strtok($r, '------解决方案--------------------')); $s =<<< TXT 输入内容坏蛋123 TXT; //仅识别 print_r($trie->match($s)); /* 得 Array ( [0] => 输入内容 [1] => 坏蛋 [2] => 123 ) */ //去掉字典字 $trie->savematch = 0; print_r($trie->match($s)); /* 得 Array ( [0] => 输入内容 [1] => 123 ) */ 明らかにあなたのニーズは満たされています 結果を出力するときは、配列を文字列に連結するだけです キーワードを強調表示したい場合は、次のようにすることができます class mytrie extends ttrie { function b() { $this->buffer[] = '' . array_pop($this->buffer) . ''; } } $trie = new mytrie; foreach(file('abc.txt') as $r) $trie->set(strtok($r, '------解决方案--------------------'), 'b'); $s =<<< TXT 输入内容坏蛋123 TXT; print_r($trie->match($s)); /* 得 Array ( [0] => 输入内容 [1] => 坏蛋 《== 这个就被突出显示了 [2] => 123 ) */ 実際、魚はあなたに与えられたものなので、自分でやった方が良いです インスタンス化されたオブジェクトを再利用するには、match メソッドの先頭に $this->buffer = array(); $this->input = 0; $this->backtracking = 0; を追加して、データ ポインター を再初期化する必要もあります。