纠正了自己的错误想法--DZ论坛文字过滤做法!
公司项目需要文字的过滤系统,于是我第一反应将敏感字词入库,然后用待过滤string去数据库中select like %string%
但是经过现实的检查这样的做法是错误的。
字库中的字是小的集合,而待过滤的string是大的集合,怎么能用大集合去匹配小集合呢?
于是我找来DZ论坛的源码研究了一下,发现他的做法相对科学。于是就有了club-fish现在的敏感词过滤系统。
第一步:
还是将敏感词入库
第二步:
将敏感词全部提取出来按一定格式存放在文本文件中(cache)
第三步:
这个是匹配前的准备,将cache中的敏感词组合成正则。
第四步:
用上一步生成的正则去匹配待过滤string,产生结果。
参考程序discuzcode.func.php中的
function censor($message)
humen1 Tech