我不生产代码
我只是代码的搬运工

PHP计算身份证号最后一位校验码

   民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

校验码的计算方法:

   1、将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。

   2、将这17位数字和系数相乘的结果相加。

   3、用加出来和除以11,看余数是多少?

   4、余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身份证的号码为1-0-X -9-8-7-6-5-4-3-2。

 

   判断身份证号是否正确的函数如下:

function validIdCard($idCard) {
   if (strlen($idCard) != 18) {
       return false;
   }
   $coefficient = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];      //前17位对应的系数
   $remainderArr = ['1', '0', 'X', '9', '8', '7', '6' ,'5' ,'4', '3', '2'];   //余数对应的最后一位
   $sum = 0;    //前17位乘以系数后的和
   for ($i = 0; $i < 17; $i++) {
       $tmp = substr($idCard, $i, 1);
       $sum += intval($tmp) * $coefficient[$i];
   }

   $remainder = $sum % 11;
   if ($remainderArr[$remainder] == substr($idCard, 17, 1)) {
       return true;
   } else {
       return false;
   }
}


本文章为本站原创,如转载请注明文章出处:https://www.sviping.com/archives/3

分享到:
上一篇: javascript灯箱特效 lightbox 下一篇: Ubuntu14.04安装wineqq国际版
12