最新消息: 新版网站上线了!!!

php二代身份证号验证的方法

  1. /** 
  2.     * 验证身份证号 
  3.     * @param $vStr 
  4.     * @return bool 
  5.     */ 
  6.    function isCreditNo($vStr
  7.    { 
  8.        $vCity = array
  9.            '11','12','13','14','15','21','22'
  10.            '23','31','32','33','34','35','36'
  11.            '37','41','42','43','44','45','46'
  12.            '50','51','52','53','54','61','62'
  13.            '63','64','65','71','81','82','91' 
  14.        ); 
  15.  
  16.        if (!preg_match('/^([\d]{17}[xX\d]|[\d]{15})$/'$vStr)) return false; 
  17.  
  18.        if (!in_array(substr($vStr, 0, 2), $vCity)) return false; 
  19.  
  20.        $vStr = preg_replace('/[xX]$/i''a'$vStr); 
  21.        $vLength = strlen($vStr); 
  22.  
  23.        if ($vLength == 18) 
  24.        { 
  25.            $vBirthday = substr($vStr, 6, 4) . '-' . substr($vStr, 10, 2) . '-' . substr($vStr, 12, 2); 
  26.        } else { 
  27.            $vBirthday = '19' . substr($vStr, 6, 2) . '-' . substr($vStr, 8, 2) . '-' . substr($vStr, 10, 2); 
  28.        } 
  29.  
  30.        if (date('Y-m-d'strtotime($vBirthday)) != $vBirthdayreturn false; 
  31.        if ($vLength == 18) 
  32.        { 
  33.            $vSum = 0; 
  34.  
  35.            for ($i = 17 ; $i >= 0 ; $i--) 
  36.            { 
  37.                $vSubStr = substr($vStr, 17 - $i, 1); 
  38.                $vSum += (pow(2, $i) % 11) * (($vSubStr == 'a') ? 10 : intval($vSubStr , 11)); 
  39.            } 
  40.  
  41.            if($vSum % 11 != 1) return false; 
  42.        } 
  43.  
  44.        return true; 
  45.    } 

 

转载请注明:谷谷点程序 » php二代身份证号验证的方法