<?php namespace App\Util; class IDCard { /** * 验证身份证号 * * @param $idcard * @return bool */ public static function idcardCheck($idcard) { if (strlen($idcard) != 18) { return false; } $idcard_base = substr($idcard, 0, 17); if (self::_verifyNumber($idcard_base) != strtoupper(substr($idcard, 17, 1))) { return false; } else { return true; } } /** * 根据身份证号前17位计算第18位 * * @param $idcard_base * @return bool */ private static function _verifyNumber($idcard_base) { if (strlen($idcard_base) != 17) { return false; } $factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); //debug 加权因子 $verify_number_list = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); //debug 校验码对应值 $checksum = 0; for ($i = 0; $i < strlen($idcard_base); $i++) { $checksum += substr($idcard_base, $i, 1) * $factor[$i]; } $mod = $checksum % 11; $verify_number = $verify_number_list[$mod]; return $verify_number; } }
身份证号码正确性的验证
最新推荐文章于 2024-07-31 09:39:39 发布