PHP判斷身份證數字是否合法

<?php

$id = $_GET['id'];
if (empty($id)) {
    $id = '640202198803060517';
}

//權重信息
$weight = [];

//身份證數字長度
$len = 18;

//計算權重信息
for ($i = 1; $i < $len; $i++) {
    $exp = 18 - $i;
    $weight[] = pow(2, $exp) % 11;
}

$wa = [];

//計算∑,相乘再相加
for ($i = 0; $i < $len - 1; $i++) {
    $wa[] = $id{$i} * $weight[$i];
}

//取的校驗和
$sum = array_sum($wa);

echo '校驗和是:' . $sum . "<br />";

//計算校驗位,MOD11-2 方法
$yu = (12 - $sum % 11) % 11;

//判斷校驗位是否合法
$last = $id{$len - 1};
if(strtolower($last) == 'x') {
    $last = 10;
}
echo $yu == $last ? '身份證校驗成功' : '身份證校驗失敗';
相關文章
相關標籤/搜索