通过中文字符比率来判断垃圾评论

最近一段时间常常出现这类垃圾评论:一大段英文字符里夹杂一两个生僻汉字,包含了中文字符,而且又没包含啥中文的敏感词,所以就堂而皇之的通过了评论过滤。对这类评论的处理可以采取判断中文字符的比率来确认,但是也会存在一定的误判。

要用到php的两个函数strlen和mb_strlen,strlen会把单个汉字长度认定为3,mb_strlen单个汉字长度为1。同一段字符通过两个函数取得的长度之差就是实际汉字字符数的二倍,除以二就得到实际的字符数,在与mb_strlen取得的长度求比值就得到汉字占总字符数的比率。


 $len_all = strlen($comment['text']);                      
 $len_st = mb_strlen($comment['text'], 'UTF-8');
 if(($len_all-$len_st)/(2*$len_st) < 0.5){
        $error = "中文字符少于百分之五十";	
 }

如果在评论中贴代码的话,就会造成中文字符比率低,需要过滤掉代码字段再来判断。

Published by 阿飞 on
Tags: php, 垃圾评论

12 条评论

  1. 装个验证码插件

    1. 我始终认为给评论加验证码不太友好,增加了用户的操作。
      前台操作简单,后台严格过滤,应该要好点。

  2. 若是再结合ip判断就完美了

    1. 现在有不少ip地址库和查询API可以方便实现

  3. 就是有一些垃圾评论带一些怪字

  4. 9527 9527

    过滤插件,阳光不是把它升级到头像也判断了么?

    1. 头像也判断?我现在用的是他很早发布的那个修改版,最新的在哪里?

  5. 这个方法对有些垃圾评论还是没有用的,我就经常见到全中文的垃圾评论,肯定是自动评论的,好像是预设了很多句子。

  6. 其实,评论插件能带上封IP功能那是最好不过了。

    1. 评论过滤插件能屏蔽IP

  7. 其实我觉得评论处,可以设置一些鼠标点击的验证,如拖某个图标到某个地方。。

    1. 这种插件已经有了,从用户体验来讲比输验证码的要方便