QUOTE:
最初由 dzy 发布
[B]<一>
(1)英文代號以下表轉換成數字
A=10 台北市 J=18 新竹縣 S=26 高雄縣
B=11 台中市 K=19 苗栗縣 T=27 屏東縣
C=12 基隆市 L=20 台中縣 U=28 花蓮縣
D=13 台南市 M=21 南投縣 V=29 台東縣
E=14 高雄市 N=22 彰化縣 * W=32 金門縣
F=15 台北縣 * O=35 新竹市 X=30 澎湖縣
G=16 宜蘭縣 P=23 雲林縣 Y=31 陽明山
H=17 桃園縣 Q=24 嘉義縣 * Z=33 連江縣
* I=34 嘉義市 R=25 台南縣
(2)英文轉成的數字, 個位數乘9再加上十位數
(3)各數字從右到左依次乘1、2、3、4....8
(4)求出(2),(3)之和
(5)求出(4)除10後之餘數,用10減該餘數,結果就是檢查碼,若餘數為0
檢查碼就是0
例如: 身分證號碼是 W100232736
W 1 0 0 2 3 2 7 3
3 2
× × × × × × × × ×
9 8 7 6 5 4 3 2 1
─────────────────────
3 + 18 + 8 + 0 + 0 + 10 + 12 + 6 + 14 + 3 =74
74/10=7....4 (餘數)
10-4=6 (檢查碼)
故身分證號碼是 W100232736
這個規則很有趣吧,其中第十個數字叫檢測位元;換句話說,
這是為了判別是否為正確身份證號碼,所加入的特別數字。
<二>
驗証:
若餘數為 0 ,則為正確的身分證字號。
若身分證號碼是 W100232736
W 1 0 0 2 3 2 7 3 6
3 2
× × × × × × × × ×
9 8 7 6 5 4 3 2 1
─────────────────────
3 + 18 + 8 + 0 + 0 + 10 + 12 + 6 +14 + 3 + 6 =80
80/10=8....(整除,故為正確的身份證字號)
身份證字號產生器一 身份證字號產生器二
要想实现以上这个功能.用php该那么写呢? [/B]
<?php
function checkid($id)
{
$Arr = 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);
$id = strrev($Arr[$id{0}] . substr($id, 1));
$total = 0;
for ($i = 1; $i <=9; $i++)
{
$total += $id{$i} * $i;
}
$total += $id{strlen($id)-1};
return ((10 - $total % 10 == $id{0}) && ($total+$id{0}) % 10 == 0) ? TRUE : FALSE;
}
?>