当前位置 : 主页 > 网络编程 > PHP >

手机号组成规则 - 分档

来源:互联网 收集:自由互联 发布时间:2021-06-28
手机号组成规则 - 分档 // +--------------------------------------------------------------------------------------------// | Date:2016/8/24// +------------------------------------------------------------------------------------------
手机号组成规则 - 分档
 
// +--------------------------------------------------------------------------------------------
// | Date:2016/8/24
// +--------------------------------------------------------------------------------------------
namespace rule;
class Rules
{
    /**
     * 获取手机号码靓号规则
     * =param $phone
     * =return array
     */
    function getRule($phone)
    {
        $n1 = substr($phone, 0, 1);
        $n2 = substr($phone, 1, 1);
        $n3 = substr($phone, 2, 1);
        $n4 = substr($phone, 3, 1);
        $n5 = substr($phone, 4, 1);
        $n6 = substr($phone, 5, 1);
        $n7 = substr($phone, 6, 1);
        $n8 = substr($phone, 7, 1);
        $n9 = substr($phone, 8, 1);
        $n10 = substr($phone, 9, 1);
        $n11 = substr($phone, 10, 1);
        $rules = [
            [
                'name' => 'AAAAAAAA',
                'rule' => '($n4==$n5) && ($n5==$n6) && ($n6==$n7) && ($n7==$n8) && ($n8==$n9) && ($n9==$n10) && ($n10==$n11)'
            ],
            [
                'name' => 'AAAAAAA',
                'rule' => '($n5==$n6) && ($n6==$n7) && ($n7==$n8) && ($n8==$n9) && ($n9==$n10) && ($n10==$n11) && ($n4!=$n5)'
            ],
            [
                'name' => 'AAAAAA',
                'rule' => '($n6==$n7) && ($n7==$n8) && ($n8==$n9) && ($n9==$n10) && ($n10==$n11) && ($n5!=$n6)'
            ],
            [
                'name' => 'AAAAA',
                'rule' => '($n7==$n8) && ($n8==$n9) && ($n9==$n10) && ($n10==$n11) && ($n6!=$n7)'
            ],
            [
                'name' => 'AAAA',
                'rule' => '($n11==$n10) && ($n10==$n9) && ($n9==$n8) && ($n8!=$n7)'
            ],
            [
                'name' => 'AAA',
                'rule' => '($n11==$n10) && ($n10==$n9) && ($n9!=$n8)'
            ],
            [
                'name' => 'AA',
                'rule' => '($n11==$n10) && ($n10!=$n9) && ($n9!=$n8)'
            ],
            [
                'name' => 'ABCDEF',
                'rule' => '($n11-$n10)==1 && ($n10-$n9)==1 && ($n9-$n8)==1 && ($n8-$n7)==1 && ($n7-$n6)==1'
            ],
            [
                'name' => 'ABCDE',
                'rule' => '($n11-$n10)==1 && ($n10-$n9)==1 && ($n9-$n8)==1 && ($n8-$n7)==1 && ($n7-$n6)!=1'
            ],
            [
                'name' => 'ABCD',
                'rule' => '($n11-$n10)==1 && ($n10-$n9)==1 && ($n9-$n8)==1 && ($n8-$n7)!=1'
            ],
            [
                'name' => 'ABC',
                'rule' => '($n11-$n10)==1 && ($n10-$n9)==1 && ($n9-$n8)!=1'
            ],
            [
                'name' => 'AABB',
                'rule' => '($n8==$n9) && ($n10==$n11) && ($n9!=$n10)'
            ],
            [
                'name' => 'ABAB',
                'rule' => '($n8==$n10) && ($n9==$n11) && ($n10!=$n11)'
            ]
        ];
        //参数替换
        foreach ($rules as $key => $value) {
            @eval('$result=(' . $value['rule'] . ');');
            if ($result) {
                $data = $value;
            }
        }
        if (empty($data)) {
            $data = [
                'name' => 'P',
                'rule' => 'P'
            ];
        }
        return $data;
    }
}
php - 2
  [
                "/(\d)\\1(\d)(\\2){2}/",
                "/(\d)(\d)(\\1\\2){2}/",
                "/(0(?=3)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){3,8}/",
                "/(\\d)\\1{4}/",
                "/(\\d)\\1{3}/",
            ],
            "2" => [
                "/(\d)\\1(\d)\\2/",
                "/(\d)(\d)\\1\\2/",
                "/(\\d)\\1{2}/",
                "/(\d)\\1{2}(\d)\\2/",
            ],
            "3" => [
                "/.*88$/"
            ]
        ];

        // 解析档次
        foreach ($ruleArr as $hbKey => $tmpRuleArr)
        {
            foreach ($tmpRuleArr as $rule) {
                $result = preg_match($rule, $mobile);
                if ($result) {
                    return $hbKey;
                }
            }
        }

        // 判断是否有可能是生日
        $monthNum = intval(substr($mobile, 3, 2));
        $dayNum = intval(substr($mobile, 5, 2));
        if ($monthNum < 13 && $dayNum < 32) {
            return $lowestLevel-1;
        }

        return $lowestLevel;
    }
网友评论