<?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 ? '身份證校驗成功' : '身份證校驗失敗';