台灣身份證號檢查-自訂函數(Function)

<?php
/*
*正確傳回一個陣列(0-4),不正確傳回空陣列
*0=為零表示證號無誤
*1=出生地
*2=1或2,為性別
*3=證號2-7碼
*4=檢查碼,保留
*/
$id_number=’A123456789′;
function id_check(&$id_number){
$check = preg_match(“/(^[A-Z]{1})([1-2]{1})([0-9]{7})([0-9]{1}$)/”,stripslashes(strtoupper(preg_replace(‘/\s/’,”,$id_number))),$pid_array);
if ($check){
$id_serial =array(1,9,8,7,6,5,4,3,2,1,1);
$area_code=array( ‘A’ => 10,’B’ => 11,’C’ => 12,’D’ => 13, ‘E’ => 14,’F’ =>15,’G’ => 16,’H’ => 17,’I’ => 34,’J’ => 18,’K’ => 19,’L’ => 20,’M’ => 21,’N’ => 22,’O’ => 35,’P’ => 23,’Q’ => 24,’R’ => 25,’S’ => 26,’T’ => 27,’U’ => 28,’V’ => 29,’W’ => 32,’X’ => 30,’Y’ => 31,’Z’ => 33);
$city=array(‘台北市’=>’A’,’台中市’=>’B’,’基隆市’=>’C’,’台南市’=>’D’,’高雄市’=>’E’,’新北市’=>’F’,’宜蘭縣’=>’G’,’桃園市’=>’H’,’嘉義市’=>’I’,’新竹縣’=>’J’,’苗栗縣’=>’K’,’台中縣’=>’L’,’南投縣’=>’M’,’彰化縣’=>’N’,’新竹市’=>’O’,’雲林縣’=>’P’,’嘉義縣’=>’Q’,’台南縣’=>’R’,’高雄縣’=>’S’,’屏東縣’=>’T’,’花蓮縣’=>’U’,’台東縣’=>’V’,’金門縣’=>’W’,’澎湖縣’=>’X’,’陽明山管理局’=>’Y’,’連江縣’=>’Z’);
$conversion=preg_split(‘//’,preg_replace(“/^[A-Z]/”, $area_code[substr($pid_array[0],0,1)] , $pid_array[0]),-1,PREG_SPLIT_NO_EMPTY);
$cal = function ($a,$b){return ($a * $b);};
$result=array_sum(array_map($cal,$id_serial,$conversion))%10;
$pid_array[0]=$result;//將計算結果給陣列,0為正確其它為不正確
$pid_array[1]=array_search(‘A’,$city);//設定出生地名稱至陣列
($pid_array[2]=1)?$pid_array[2]=’男’:$pid_array[2]=’女’;//設定性別至陣列
}
return $pid_array;
}
$pid_array=id_check($id_number);
print_r($pid_array);


Posted in 未分類 by with 4 comments.

Pingbacks & Trackbacks

    發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *