將全部敏感詞生成 Trie 樹結構,便於作敏感詞檢測,生成代碼以下php
class TrieNode { private static $TrieTree; public function __construct() { static::$TrieTree = []; } public function insert($sensWords): TrieNode { $words = preg_split('//u', $sensWords, -1, PREG_SPLIT_NO_EMPTY); $_tree = &static::$TrieTree; foreach ($words as $key => $_word) { if (!isset($_tree[$_word])) { $_tree[$_word] = [ 'isEnd' => !isset($words[$key + 1]), 'child' => [] ]; } $_tree = &$_tree[$_word]['child']; } return $this; } public function getTree() { return static::$TrieTree; } } $treeNode = (new TrieNode)->insert('CNM')->insert('MLGB')->insert('WRNM')->getTree(); echo json_encode($treeNode,JSON_UNESCAPED_UNICODE);