运营商号码段,虚拟号段

前言:在做活动中,用户会中奖到话费和流量的奖项,有些用户为虚拟号码,话费和流量都不能给用户冲上。(最后处理结果,前台判断虚拟号段不能参与活动)

心疼 170和171的机主3秒钟

1秒

嗒嗒嗒

3秒

中国通信运营商有:移动、联通、电信

中国移动:134(不含1349)、135、136、137、138、139、147、148、150、151、152、157、158、 159、182、183、184、187、188、178、198

中国联通:130、131、132、140(物联网)145(上网卡)、146、155、156、166、185、186、175、176

中国电信:133、1349(卫星通信)、149、153、180、181、189、177、173、174、199
4G号段:176/175(联通)、173/177(电信)、178(移动)

虚拟运营商:170[1700/1701/1702(电信)、1703/1705/1706(移动)、1704/1707/1708/1709(联通)]、171(联通)

未知号段:141、142、143、144、154 没有去做判断处理

以上资料整理号码有所欠缺,技术老大说,171号段只有[1718、1719]号段为虚拟号段

我国使用的手机号码为11位数字,我们的手机号可以分为三段,都有不同的编码含义:++前3位是网络识别号++、++4-7位是地区编码(HLR归属位置寄存器)++、++8-11位是用户号码(随机分配)。++

最新整理(代码整理)

//移动号段
var $CMCC = ['134', '135', '136', '137', '138', '139', '150', '151', '152', '157', '158', '159', '182', '183', '184', '187', '188', '147', '178','143','141', '148', '198'];
//联通号段
var $CUCC = ['130', '131', '132', '155', '156', '185', '186', '145', '176', '175','171', '146', '166'];
//电信号段
var $CTCC = ['133', '153', '180', '181', '189', '177','173', '174', '199'];

虚拟号段(判断是哪个运营商)
//移动虚拟运营商
var $MVNOM = ['1705','1703','1706'];
//联通虚拟运营商
var $MVNOU = ['1704','1707', '1708', '1709', '1718', '1719'];
//电信虚拟运营商
var $MVNOT = ['1700', '1701','1702'];

/**
 * 判断手机号是否能参与活动  虚拟号段不能参与活动【 170, 171[8,9] 】
 * @param  {[type]} phone 用户输入的手机号
 * @return {[type]}       验证通过返回true,验证未通过返回错误信息
 */
var testPhone = new Object();
testPhone.info = "";
testPhone.action = function (telephone) {
    var phone = /^(((13[0-9]{1})|(14[1356789]{1})|(15[012356789]{1})|(166)|(17[01345678]{1})|(18[0-9]{1})|(19[89]{1}))+\d{8})$/;
    var mvno = /^(((170[0123456789]{1})|(171[89]{1})))+\d{7}$/; //虚拟号段
    if (phone.test(telephone)) {  //验证手机号是否正确
        if (mvno.test(telephone)) {  //验证号码是否为虚拟号
            testPhone.info = '虚拟号';
            return false;
        }
        return true;
    }
    //手机号输入错误
    testPhone.info = '手机号输入错误';
    return false;
}


//调用
if(testPhone.action(val)){  // 验证通过
    alert('验证通过')
}else { // 验证未通过
    alert(testPhone.info)
}

下面是PHP判断为哪个运营商

 /**
  * 获得手机运营商
  * @param  string $phone 手机号
  * @return string CMCC移动; CUCC联通; CTCC电信; NONO不存在的运营商
  */
 protected function _getPhoneOperator($phone)
 {
  $topThree = substr($phone, 0, 3);
  $topFour = substr($phone, 0, 4);
  $CMCC = array('134', '135', '136', '137', '138', '139', '150', '151', '152', '157', '158', '159', '182', '183', '184', '187', '188', '147', '178');
  $CUCC = array('130', '131', '132', '155', '156', '185', '186', '145', '176');
  $CTCC = array('133', '153', '180', '181', '189', '177');

  //移动虚拟运营商
  $MVNOM = array('1705');
  //联通虚拟运营商
  $MVNOU = array('1707', '1708', '1709', '1718', '1719');
  //电信虚拟运营商
  $MVNOT = array('1700', '1701');

  if (in_array($topThree, $CMCC) || in_array($topFour, $MVNOM)) {
   return 'CMCC';
  } else if (in_array($topThree, $CUCC) || in_array($topFour, $MVNOU)) {
   return 'CUCC';
  } else if (in_array($topThree, $CTCC) || in_array($topFour, $MVNOT)) {
   return 'CTCC';
  } else {
   return 'NONO';
  }
 }

内容如有问题,请邮件联系我


 上一篇
js提取中文拼音首字母方法 js提取中文拼音首字母方法
前言本文主要记录如何用js提前中文拼音首字母的方法。封装一个函数,假如有需要的,可以直接拿去用。 原理主要是根据中文的unicode码来进行的。主要是在收集的中文范围内查找,大家可以多收集一些。假如中文是多音字,那可能有点坑了! var g
2018-03-14
下一篇 
使用AI快速将模糊图片秒转矢量图/高清图 使用AI快速将模糊图片秒转矢量图/高清图
这里介绍如何用AI 快速将低像素位图转化成可以无限放大的矢量图,简单粗暴! 以下是原图: 步骤 新建一个空白画布,新建-置入 - 找到需要转化的位图 -嵌入,然后复制位图 ,方便后期做对比 选中其中一张位图-点击上方图像描摹下
  目录