- function isIdCard($number) { // 检查是否是身份证号
- $number = getIDCard($number);
- // 转化为大写,如出现x
- $number = strtoupper($number);
- //加权因子
- $wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
- //校验码串
- $ai = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
- //按顺序循环处理前17位
- $sigma = 0;
- for ($i = 0;$i < 17;$i++) {
- //提取前17位的其中一位,并将变量类型转为实数
- $b = (int) $number{$i};
- //提取相应的加权因子
- $w = $wi[$i];
- //把从身份证号码中提取的一位数字和加权因子相乘,并累加
- $sigma += $b * $w;
- }
- //计算序号
- $snumber = $sigma % 11;
- //按照序号从校验码串中提取相应的字符。
- $check_number = $ai[$snumber];
- if ($number{17} == $check_number) {
- return true;
- } else {
- return false;
- }
- }
- //该片段来自于http://www.codesnippet.cn/detail/1811201514033.html
来源: http://www.codesnippet.cn/detail/1811201514033.html