php判断是否为合法身份证号

/**
  * 判断是否为合法的身份证号码
  * @param $mobile
  * @return int
  */
function  isCreditNo( $vStr ){
     $vCity  array (
         '11' , '12' , '13' , '14' , '15' , '21' , '22' ,
         '23' , '31' , '32' , '33' , '34' , '35' , '36' ,
         '37' , '41' , '42' , '43' , '44' , '45' , '46' ,
         '50' , '51' , '52' , '53' , '54' , '61' , '62' ,
         '63' , '64' , '65' , '71' , '81' , '82' , '91'
     );
     if  (!preg_match( '/^([\d]{17}[xX\d]|[\d]{15})$/' $vStr ))  return  false;
     if  (!in_array( substr ( $vStr , 0, 2),  $vCity ))  return  false;
     $vStr  = preg_replace( '/[xX]$/i' 'a' $vStr );
     $vLength  strlen ( $vStr );
     if  ( $vLength  == 18) {
         $vBirthday  substr ( $vStr , 6, 4) .  '-'  substr ( $vStr , 10, 2) .  '-'  substr ( $vStr , 12, 2);
     else  {
         $vBirthday  '19'  substr ( $vStr , 6, 2) .  '-'  substr ( $vStr , 8, 2) .  '-'  substr ( $vStr , 10, 2);
     }
     if  ( date ( 'Y-m-d' strtotime ( $vBirthday )) !=  $vBirthday return  false;
     if  ( $vLength  == 18) {
         $vSum  = 0;
         for  ( $i  = 17 ;  $i  >= 0 ;  $i --) {
             $vSubStr  substr ( $vStr , 17 -  $i , 1);
             $vSum  += (pow(2,  $i ) % 11) * (( $vSubStr  ==  'a' ) ? 10 :  intval ( $vSubStr  , 11));
         }
         if ( $vSum  % 11 != 1)  return  false;
     }
     return  true;
}

 

转载于:https://www.cnblogs.com/chinalorin/p/5855613.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值