PHP 验证身份证号是否正确的函数

WBOY
發布: 2016-06-20 13:03:58
原創
1241 人瀏覽過

PHP 验证身份证号是否正确的函数,函数代码如下:

<p>function validation_filter_id_card($id_card){</p>	if(strlen($id_card)==18){<br />		return idcard_checksum18($id_card);<br />	}elseif((strlen($id_card)==15)){<br />		$id_card=idcard_15to18($id_card);<br />		return idcard_checksum18($id_card);<br />	}else{<br />		return false;<br />	}<br />}<br />// 计算身份证校验码,根据国家标准GB 11643-1999 <br /><p>function idcard_verify_number($idcard_base){<br /></p>	if(strlen($idcard_base)!=17){<br />		return false;<br />	}<br />	//加权因子 <br />	$factor=array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);<br />	//校验码对应值 <br />	$verify_number_list=array('1','0','X','9','8','7','6','5','4','3','2');<br />	$checksum=0;<br />	for($i=0;$i<strlen($idcard_base);$i++){<br />		$checksum += substr($idcard_base,$i,1) * $factor[$i];<br />	}<br />	$mod=$checksum % 11;<br />	$verify_number=$verify_number_list[$mod];<br />	return $verify_number;<br />}<br />// 将15位身份证升级到18位 <br />function idcard_15to18($idcard){<br />	if(strlen($idcard)!=15){<br />		return false;<br />	}else{<br />		// 如果身份证顺序码是996 997 998 999,这些是为百岁以上老人的特殊编码 <br />		if(array_search(substr($idcard,12,3),array('996','997','998','999')) !== false){<br />			$idcard=substr($idcard,0,6).'18'.substr($idcard,6,9);<br />		}else{<br />			$idcard=substr($idcard,0,6).'19'.substr($idcard,6,9);<br />		}<br />	}<br />	$idcard=$idcard.idcard_verify_number($idcard);<br />	return $idcard;<br />}<br />// 18位身份证校验码有效性检查 <br />function idcard_checksum18($idcard){<br />	if(strlen($idcard)!=18){<br />		return false;<br />	}<br />	$idcard_base=substr($idcard,0,17);<br />	if(idcard_verify_number($idcard_base)!=strtoupper(substr($idcard,17,1))){<br />		return false;<br />	}else{<br />		return true;<br />	}<br /><p>}</p>
登入後複製

调用方法如:

validation_filter_id_card('身份证号码');
登入後複製


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!