ホームページ > バックエンド開発 > PHPチュートリアル > javascript - 有没有完善的过滤QQ号的代码(JS或PHP)

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

WBOY
リリース: 2016-06-06 20:44:34
オリジナル
1066 人が閲覧しました

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>
ログイン後にコピー

用正则表达式

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート