目前是遍历,但是关键词一多,感觉效率很差
$arr = Array("vpn","shadowsock","翻墙");
foreach($arr as $val){
if(stristr(str_replace(' ','',$_POST['content']),$val)){
print_r('评论中有敏感词汇,请重新编辑');
}
}
1
JKeita 2017-10-23 08:59:00 +08:00
trie 树
|
2
justfindu 2017-10-23 09:01:32 +08:00 1
|
3
zhs227 2017-10-23 09:06:04 +08:00
trie,github 上有写成 c 扩展的,专门用来屏蔽敏感词。
|
4
qiayue 2017-10-23 09:06:21 +08:00
在循环里多次从 post 获取同一个值不太好吧
|
5
tradzero 2017-10-23 09:14:30 +08:00 via Android
AST 树 这个项目我正在用 还挺不错 https://github.com/andares/adarts
|
6
king2014 2017-10-23 09:15:22 +08:00
foreach 循环效率应该是最差的,还不如用 array_search 和 in_array,这两个效率差不多,但是也不是最好的解决办法,建议学习下 1 楼提出的方法
|
7
sagaxu 2017-10-23 09:21:32 +08:00 via Android
把删空格移到循环外面,能提高一些性能。
再试试把关键词编译成正则,还有楼上提示的 tire 树。 这方面应该有不少论文,可以搜搜看。 |
8
vex2 2017-10-23 09:37:11 +08:00
状态机。。。
|
9
holajamc 2017-10-23 10:07:55 +08:00
ac 自动机呗
|
10
holajamc 2017-10-23 10:08:20 +08:00
|
11
siriussilen 2017-10-23 10:46:13 +08:00
哈希处理+二叉树呗
|