discuz帖子关键词过滤主要通过后台「词语过滤」配置并辅以代码调整实现;需区分限制对象、处理方式及审核词范围,优先设“待审核”,拦截高频垃圾词,合理使用通配与正则,管理员可修改class_censor.php免检,最后务必测试验证并定期维护。

Discuz 的帖子内容过滤关键词规则,主要通过后台「词语过滤」功能配置,再配合少量代码调整实现更灵活的控制。关键在于区分“谁受限制”“怎么处理违规词”以及“哪些词该进审核而非直接屏蔽”。
后台设置:先配好基础过滤逻辑
进入后台 → 内容 → 词语过滤,这是最直接的操作入口:
- 添加关键词时选对动作:建议优先选“待审核”,而不是“禁止发布”。选“禁止”会导致含关键词的帖子直接发不出,连管理员都可能被卡住;选“待审核”则内容进后台队列,由人工判断是否放行。
- 重点拦截高频垃圾特征:比如 http://、https://、url、com、cn(单独出现且无上下文时)、免费领取、加微信 等,能挡住八成外链广告帖。
- 注意通配与精确匹配:勾选“全匹配”只拦完整词(如“发票”不拦“电子发票”);不勾则模糊匹配,更严格但也容易误伤,需测试后定。
绕过限制:让管理员发帖不受关键词影响
默认情况下,所有用户(包括管理员)都会被词语过滤规则扫描。若需管理员免检,要改程序文件:
- Discuz X3.1 及之后版本:编辑 source/class/discuz/class_censor.php
- 找到 function check(&$message, $modword = NULL) 函数开头处,插入以下代码:
global $_G;
if($_G['groupid'] == 1 || $_G['groupid'] == 17) {
return DISCUZ_CENSOR_SUCCEED;
}
- 其中 groupid=1 是超级管理员,17 是网站编辑组(具体ID可在后台“用户 → 用户组”里查);你也可以按需扩展其他组ID。
- 这段代码放在函数最前面,确保一进来就放行,不走后续检测逻辑。
进阶技巧:用正则或组合词提升过滤精度
单纯列关键词容易漏或误杀。可借助正则表达式(需开启高级过滤模式)做更准识别:
- 例如过滤“VX”“薇X”“微×”等变体,可写:/v[×x\*]|微[×x\*]|薇[×x\*]/i
- 过滤带数字的微信号:/[a-zA-Z]{2,}\d{5,}/(匹配如 abc123456)
- 注意:正则模式下,“动作”必须设为“替换”或“待审核”,不能选“禁止”,否则正则可能失效或报错。
验证与维护:别改完就扔一边
修改后务必做几件事:
- 用普通会员账号发含关键词的测试帖,确认进审核队列;再用管理员账号发同样内容,确认直接通过。
- 定期导出「词语过滤」列表,检查是否有重复、冲突或已失效的词(比如旧广告域名停用了,还留着占资源)。
- 结合论坛回收站和定时任务,对长期未审核的待审帖自动清理,避免堆积。











