顯示廣告
隱藏 ✕
看板 Mesak
作者 mesak (Mesak)
標題 [PHP] 身份證字號驗證 一般版
時間 2012年11月30日 Fri. PM 12:20:06

部落格:

function pid_check($pid)
{
	
if(!preg_match("/^[A-Za-z][1-2][0-9]{8}$/",$pid))
	
{
	
	
return FALSE;
	
}
	
$pid = strtoupper($pid);
	
$headPoint   = array('A'=>'10','B'=>'11','C'=>'12','D'=>'13','E'=>'14','F'=>'15','G'=>'16','H'=>'17','I'=>'34','J'=>'18','K'=>'19','M'=>'21','N'=>'22','O'=>'35','P'=>'23','Q'=>'24','T'=>'27','U'=>'28','V'=>'29','W'=>'32','X'=>'30','Z'=>'33','L'=>'20','R'=>'25','S'=>'26','Y'=>'31');
	
$point = array(1,9,8,7,6,5,4,3,2,1,1);
	
$pid_strlen  = strlen($pid);
	
$sum = 0;
	
$uarray = array();
	
for($i=0;$i<$pid_strlen;$i++)
	
{
	
	
$index = substr($pid,$i,1);
	
	
if($i == 0){
	
        $uarray[] = substr($headPoint[$index],0,1);
	
        $uarray[] = substr($headPoint[$index],1,1);
	
	
}else{
	
	
	
$uarray[] = $index;
	
	
}
	
}
	
for($i=0;$i<11;$i++)
	
{
	
	
$sum += intval($uarray[$i]) * $point[$i];
	
}
	
return ( $sum % 10 == 0 ) ? TRUE:FALSE;
}

--
※ 作者: mesak 時間: 2012-11-30 12:20:06
※ 編輯: mesak 時間: 2014-11-14 11:48:42
※ 看板: Mesak 文章推薦值: 0 目前人氣: 0 累積人氣: 976 
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇