织梦采集发布自动过滤违规内容:织梦采集发布自动过滤违规内容实
织梦采集发布自动过滤违规内容,核心思路是在采集规则解析后、入库前插入过滤环节,利用系统自带的敏感词替换和自定义函数拦截违规信息。
适合使用DedeCMS采集但不想人工逐条审核的站长,按本文步骤配置后,可自动丢弃或替换含违规词的标题与正文。
过滤前的环境确认与准备
操作前请确认织梦版本支持自定义过滤函数,通常V5.7及以上版本均可在后台管理。
需要准备:
- 织梦后台管理员账号,用于修改系统设置和采集规则。
- 服务器文件管理权限或FTP,用于编辑
/include/目录下的文件。 - 一份初步的违规词库,可先用文本文件列出关键词,每行一个。
建议先备份/data/目录和数据库,避免误操作导致数据丢失。
配置系统敏感词替换
织梦自带敏感词过滤功能,路径为:后台 -> 系统 -> 系统设置 -> 敏感词管理。
在此处添加违规词,并设置替换值。
例如将“违规词A”替换为“*”。注意:此处过滤仅针对发布内容,采集入库时同样生效,但不会阻止入库,而是替换字符。
**
如果需要直接丢弃含违规词的采集内容,需要进入下一步自定义过滤。
在采集规则中启用自定义过滤函数
织梦采集支持在“采集规则”中设置“过滤函数”。
进入后台 -> 采集 -> 采集节点管理 -> 编辑对应节点,在“采集规则”区域找到“内容过滤”或“自定义过滤函数”输入框。
填写自定义函数名,例如filterViolation。
然后在服务器上打开/include/helpers/filter.helper.php(若不存在可新建),添加如下函数:
function filterViolation($content) {
$badWords = ['违规词1', '违规词2', '赌博', '色情'];
foreach ($badWords as $word) {
if (strpos($content, $word) !== false) {
return ''; // 返回空字符串表示丢弃该内容
}
}
return $content;
}
保存后,在采集规则中调用该函数。
若采集规则不支持直接写函数名,可在/dede/co_do.php中查找采集入库前的处理位置,手动加入$content = filterViolation($content);。
关键点:函数返回空字符串时,织梦会视为无内容,从而不发布该文章。
避坑:过滤规则与性能平衡
- 违规词库不宜过大,否则每次采集都遍历数组会拖慢速度。建议控制在500词以内,或改用Trie树优化。
- 过滤函数应放在入库前,避免已发布文章被二次过滤导致内容变空。
- 若使用“替换为***”模式,注意不要替换掉正常词汇中的部分字符,例如“色”字可能误伤“色彩”。
- 修改核心文件前务必测试,可在本地环境先验证函数逻辑。
验证过滤效果与日常维护
配置完成后,手动添加一条包含违规词的采集测试文章,观察是否被丢弃或替换。
查看后台“内容管理”中是否出现该文章。
如果未生效,检查:
- 采集规则中是否正确填写函数名。
- 函数文件是否被正确引入,可在
/include/common.inc.php中确认加载。 - 清除系统缓存:后台 -> 系统 -> 清除缓存。
日常维护时,定期更新违规词库,并关注采集日志中的过滤记录。
织梦采集发布自动过滤违规内容并非一劳永逸,需根据实际采集源调整策略。
常见疑问
问:过滤函数返回空字符串后,采集进度会中断吗?
不会,织梦会跳过该条内容继续采集下一条。
问:能否只过滤标题不过滤正文?
可以,在函数中单独判断$title,但需要修改采集处理逻辑,建议参考官方文档。
问:敏感词替换和自定义函数哪个优先?
系统敏感词替换先执行,自定义函数后执行。如果希望直接丢弃,建议关闭敏感词替换,仅用自定义函数。
按照以上步骤操作后,你的织梦站点即可在采集发布环节自动拦截违规内容,减少人工审核工作量。
如果遇到过滤不生效,优先检查函数是否被正确调用。