>  기사  >  백엔드 개발  >  PHP ID 카드 인증 코드 계산 방법_php 예제

PHP ID 카드 인증 코드 계산 방법_php 예제

WBOY
WBOY원래의
2016-08-17 13:02:351358검색

각 중국(본토) 주민등록번호의 의미는 인터넷상의 여러 기사에 소개된 바 있으므로 여기서는 자세한 내용을 다루지 않겠습니다. ID 번호의 마지막 숫자는 체크 코드이며 처음 17자리를 기준으로 계산됩니다. 알고리즘은 대략 다음과 같습니다. 처음 17자리의 각 숫자에 일련의 가중치를 곱한 다음 이러한 곱의 합을 계산하고 모듈로 11을 일련 번호로 취하여 마지막으로 이를 추출합니다. 코드 문자열 확인 일련번호에 해당하는 문자를 출력합니다. 물론 인터넷에는 이 검사 코드를 계산하는 방법을 가르치는 많은 기사가 있습니다. 아래에서는 사용자의 ID 번호가 올바른지 확인하는 등 PHP 개발에 사용될 수 있습니다.

중국(본토) 주민등록번호의 첫 17자리가 44010221990101001(참고: 이 사람은 2199년에 태어났습니다)이라고 가정하고, PHP 코드 몇 줄을 작성하여 확인 코드를 완성해 보겠습니다. 위의 알고리즘에 따라. 모두가 쉽게 이해할 수 있도록 간단한 설명을 사용했습니다. 코드를 참조하세요.

<&#63;php
//身份证号码前17位,可以从各种数据源中获得(如数据库、用户提交的表单等)
$body = '44010221990101001';
//加权因子
$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位
for ($i = 0;$i < 17;$i++) {
//提取前17位的其中一位,并将变量类型转为实数
$b = (int) $body{$i};
//提取相应的加权因子
$w = $wi[$i];
//把从身份证号码中提取的一位数字和加权因子相乘,并累加
$sigma += $b * $w;
}
//计算序号
$number = $sigma % 11;
//按照序号从校验码串中提取相应的字符。
$check_number = $ai[$number];
//输出
echo $body.$check_number;
&#63;>

위 코드를 실행하면 신분증 인증코드가 9로 계산됩니다. 신분증 앞 17자리를 사용해 보세요.

위의 예를 이해했다면 이 코드의 일부 명령문을 병합하고 불필요한 변수를 제거한 후 최적화하여 다음 코드를 얻을 수 있습니다.

<&#63;php
$body = '44010221990101001';
$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');
for ($i = 0;$i < 17;$i++) {
$sigma += ((int) $body{$i}) * $wi[$i];
}
echo $body.$ai[($sigma % 11)];
&#63;>

위는 편집자가 소개한 PHP ID 카드 인증 코드 계산 방법입니다. 궁금한 점이 있으면 메시지를 남겨주시면 편집자가 시간에 맞춰 답변해 드리겠습니다. 또한 Script House 웹사이트를 지원해 주시는 모든 분들께 감사의 말씀을 전하고 싶습니다!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.