Heim >Backend-Entwicklung >PHP-Tutorial >javascript - 有没有完善的过滤QQ号的代码(JS或PHP)

javascript - 有没有完善的过滤QQ号的代码(JS或PHP)

WBOY
WBOYOriginal
2016-06-06 20:44:341067Durchsuche

1.过滤正常QQ号 (QQ:8141334)
2.忽略网址中出现的数字串如:http://bangpai.taobao.com/group/thread/16151013-290178703.htm

如果能做到过 滤特殊QQ号 ( ⑧①④①③③④ 、八一四一三三四) 就更好了

回复内容:

1.过滤正常QQ号 (QQ:8141334)
2.忽略网址中出现的数字串如:http://bangpai.taobao.com/group/thread/16151013-290178703.htm

如果能做到过 滤特殊QQ号 ( ⑧①④①③③④ 、八一四一三三四) 就更好了

思路:

  1. 先用正则替换,把所有的网址从原文本中删除
  2. 然后再查找5位以上的连续数字就好了。

至于过滤特殊qq号,我认为是白费心机。Unicode的神奇是很多人经常低估的:

  • 普普通通的一个数字,例如9就能整出9九玖⑨⑼⒐٩⁹₉⓽❾➈➒㈨㊈这么多种写法
  • 更不用说1、0之类的还可以用字母I、O、L以及衍生的ⒾⓞⓛⓄ⒧⒪等等变体进行混淆
  • 混杂复杂的控制字符。你能发现A​B这两个字母中间有个零宽度空格吗?

该缴枪投降的时候就投降。明文的qq号够用的时候,就别在对付特殊符号上费尽心机了。

注:即使是对付spam等刚需,过滤汉字词汇也比对抗特殊符号qq有效得多。

是可以过滤,但是不可能没一个都过滤掉。
过滤原理,将里面的一二三四,①②全部替换成数字,再匹配是否是。

思路

<code>class FilterQQ
{


    public static function hasQQ($string = '')
    {
        $string = self::replace($string);
        return preg_match('/[1-9]{1}[0-9]{5,12}/', $string) ? true : false;
    }

    public static function replace($string = '')
    {
        $arr = array(
            '0' => array('0', '零', '〇'),
            '1' => array('1', '一', '①'),
            '2' => array('2', '二', '②'),
            '3' => array('3', '三', '③'),
            '4' => array('4', '四', '④'),
            '5' => array('5', '五', '⑤'),
            '6' => array('6', '六', 'liu'),
            '7' => array('7', '七', '⑦'),
            '8' => array('8', '八', '⑧'),
            '9' => array('9', '久', '九'),
            ''  => array_unique(explode('|', ',|。|;|‘|’|“|”|+|—|—|||、|~|@|#|¥|%|…')),
        );

        return str_replace(array_values($arr), array_keys($arr), $string);
    }
}


//使用方法
$string = '阿什顿发送的发生的发生的放啊啊';
var_dump( FilterQQ::hasQQ($string));


</code>

用正则表达式

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn