이 기사에서는 PHP 언어를 사용하여 ID 카드 확인 코드를 구현하여 사용자의 ID 번호가 올바른지 확인하는 방법을 공유합니다.
중국(본토) 시민 ID 카드 번호의 각 숫자의 의미는 여러 언어로 소개됩니다. 인터넷 기사, 여기서는 많이 말하지 않겠습니다. ID 번호의 마지막 숫자는 체크 코드이며 처음 17자리를 기준으로 계산됩니다. 알고리즘은 대략 다음과 같습니다. 처음 17자리의 각 숫자에 일련의 가중치를 곱한 다음 이러한 곱의 합을 계산하고 모듈로 11을 일련 번호로 취하여 마지막으로 이를 추출합니다. 코드 문자열 확인 일련번호에 해당하는 문자를 출력합니다. 물론 인터넷에는 이 검사 코드를 계산하는 방법을 가르치는 많은 기사가 있습니다. 아래에서는 사용자의 ID 번호가 올바른지 확인하는 등 PHP 개발에 사용될 수 있습니다.
중국(본토) 주민등록번호의 첫 17자리가 44010221990101001(참고: 이 사람은 2199년에 태어났습니다)이라고 가정하면, 다음과 같이 PHP 코드 몇 줄을 작성하여 확인 코드를 완성해 보겠습니다. 위의 알고리즘으로 계산합니다. 모두가 이해하기 쉽도록 더 간단한 표현을 사용했습니다. 코드를 참조하세요:
<?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; ?>
위 코드를 실행하면 신분증 인증코드가 9로 계산됩니다. 신분증 앞 17자리를 사용해 보세요.
위의 예를 이해했다면 이 코드의 일부 문을 병합하고, 불필요한 변수를 제거하고, 최적화하여 다음 코드를 얻을 수 있습니다.
<?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)]; ?>
요약: 위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되길 바랍니다.
관련 권장 사항:
PHP에서 정적 변수를 사용하는 방법에 대한 자세한 예
위 내용은 PHP 기반의 신분증 인증코드 계산방법 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!