千家信息网

PHP如何判断身份证号

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章将为大家详细讲解有关PHP如何判断身份证号,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。身份证号/*** 判断参数字符串是否为天朝身份证号* @param
千家信息网最后更新 2024年11月23日PHP如何判断身份证号

这篇文章将为大家详细讲解有关PHP如何判断身份证号,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

身份证号

/*** 判断参数字符串是否为天朝身份证号* @param $id 需要被判断的字符串或数字* @return mixed false 或 array[有内容的array boolean为真]*/function is_citizen_id($id) {  //长度效验 18位身份证中的X为大写  $id = strtoupper($id);  if(!(preg_match('/^\d{17}(\d|X)$/',$id) || preg_match('/^\d{15}$/',$id))) {   return false;  }  //15位老号码转换为18位 并转换成字符串  $Wi     = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1);   $Ai     = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');   $cardNoSum  = 0;  if(strlen($id)==16) {    $id    = substr(0, 6).'19'.substr(6, 9);     for($i = 0; $i < 17; $i++) {     $cardNoSum += substr($id,$i,1) * $Wi[$i];    }     $seq    = $cardNoSum % 11;     $id    = $id.$Ai[$seq];  }  //效验18位身份证最后一位字符的合法性  $cardNoSum  = 0;  $id17    = substr($id,0,17);  $lastString = substr($id,17,1);  for($i = 0; $i < 17; $i++) {    $cardNoSum += substr($id,$i,1) * $Wi[$i];  }   $seq     = $cardNoSum % 11;  $realString = $Ai[$seq];  if($lastString!=$realString) {return false;}  //地域效验  $oCity    = 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=>"国外");  $City    = substr($id, 0, 2);  $BirthYear  = substr($id, 6, 4);  $BirthMonth = substr($id, 10, 2);  $BirthDay  = substr($id, 12, 2);  $Sex     = substr($id, 16,1) % 2 ;//男1 女0  //$Sexcn    = $Sex?'男':'女';  //地域验证  if(is_null($oCity[$City])) {return false;}  //出生日期效验  if($BirthYear>2078 || $BirthYear<1900) {return false;}  $RealDate  = strtotime($BirthYear.'-'.$BirthMonth.'-'.$BirthDay);  if(date('Y',$RealDate)!=$BirthYear || date('m',$RealDate)!=$BirthMonth || date('d',$RealDate)!=$BirthDay) {    return false;  }  return array('id'=>$id,'location'=>$oCity[$City],'Y'=>$BirthYear,'m'=>$BirthMonth,'d'=>$BirthDay,'sex'=>$Sex);}

关于"PHP如何判断身份证号"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

0