---
url: /docs/catchadmin/sensitive-word.md
---
# 敏感词

最近国内对敏感词管理还是很严格，很多后台管理中都未提供该功能，所以 `CatchAdmin` 后台就增加了这个功能模块，
采用了常见 `DFA` 算法提高查找性能。

### 如何使用

在后台管理中，系统模块下的敏感词模块添加所需要屏蔽的敏感词。但并不是说非得使用库的形式，下面会提到为什么不需要这么做。

`CatchAdmin` 提供了 `catcher\library\Trie` 扩展来增加你的敏感词库。来看一下代码。

```
$words = SensitiveWord::cursor();

$trie = new Trie();

foreach ($words as $word) {
    $trie->add($word->word);
}

// 获取 trie tree
$trie->getTries();

// 缓存
$trie->cached();
```

从词库里面获取到敏感词之后，添加到 `Trie Tree` 里面。`CatchAdmin` 已经封装好了好了整个过程。所以可以轻松使用。

::: warning
`trie` 缓存使用的是 `Redis`，无法切换，所以请使用 `cached` 方法时请链接 `Redis`，否则请自己选择使用 Cache 进行缓存
:::

### 获取内容敏感词

`getSensitiveWords` 方法可以获取到内容里面存在的敏感词汇

```
$tire->getSensitiveWords($trieTree, $content);
```

### 替换

`replace` 方法可以替换到内容里面存在的敏感词。

```
$tire->replace($words, $content);
```

### 验证

`CatchAdmin` 还提供了验证器`sensitive_word`，可以验证提交内容中是否存在敏感词.

```
[
    'word' => 'sensitive_word',
]
```

### 命令

针对敏感词库，`Catchadmin` 提供了缓存命令,也是使用 Redis 缓存

```
php think cache:sensitiveWord
```
