>백엔드 개발 >PHP 튜토리얼 >PHP 정규식을 이용하여 신분증 번호의 체크코드를 확인하는 방법

PHP 정규식을 이용하여 신분증 번호의 체크코드를 확인하는 방법

WBOY
WBOY원래의
2023-06-24 09:04:151814검색

주민등록번호는 사람들이 일상생활에서 자주 사용하는 중요한 문서로, 주민등록번호의 마지막 체크코드 확인은 주민등록번호가 적법한지 여부를 판단하는 중요한 부분입니다. PHP로 프로그래밍할 때 정규식을 사용하여 ID 번호의 검사 코드를 확인하여 ID 번호의 유효성을 확인할 수 있습니다. 다음은 PHP 정규식을 이용하여 주민등록번호의 체크코드를 확인하는 방법을 소개합니다.

  1. 주민번호 형식

우선 주민번호 형식을 이해해야 합니다. ID 카드번호는 18자리 숫자와 문자로 구성되며, 앞의 17자리는 시,군, 생년월일, 기타 정보를 나타내며 마지막 자리는 체크코드입니다. 체크 코드의 계산 규칙은 다음과 같습니다.

  1. ID 번호의 처음 17자리에 해당 가중치를 차례로 곱합니다. 즉, i번째 자리의 가중치가 Wi입니다.
  2. S를 받으려면 17개 제품을 추가하세요.
  3. 체크 코드 N은 11에서 S를 11로 나눈 나머지입니다. 여기서 X는 10을 나타냅니다.
  4. 정규식 준비하기

위의 기본 지식을 바탕으로 ID 번호를 확인하는 정규식을 작성할 수 있습니다. 다음은 샘플 코드입니다.

function checkIDCard($id_card){
    $pattern = '/^d{6}(19|20)d{2}(0d|1[0-2])([0-2]d|3[0-1])d{3}[0-9X]$/';
    if(preg_match($pattern, $id_card)){
        $wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
        $ai = str_split(substr($id_card, 0, 17));
        $n = 0;
        for($i=0; $i<17; $i++){
            $n += $wi[$i] * $ai[$i];
        }
        $c = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
        $check_code = $c[$n % 11];
        return $check_code == substr($id_card, -1);
    }
    return false;
}

$id_card = '33010219950917413X';
if(checkIDCard($id_card)){
    echo '身份证号码校验成功';
}else{
    echo '身份证号码校验失败';
}

위 정규식에서 d는 숫자 일치를 의미하고, {6}은 6번 일치를 의미하고, (19|20)d{2}는 19 또는 20으로 시작하는 4자리 숫자 일치를 의미하며, (0d|1[0-2])는 01부터 12까지의 월과 일치함을 의미하고, ([0-2]d|3[0-1])은 01부터 31까지의 날짜와 일치하는 것을 의미하고, d{3}은 3과 일치하는 것을 의미합니다. 더 많은 숫자, [0-9X]$는 숫자 또는 X로 끝나는 것을 의미합니다. 이런 방식으로 ID 번호를 효과적으로 일치시킬 수 있습니다.

  1. 테스트 및 확인

마지막으로 코드가 작동하는지 테스트할 수 있습니다. ID번호의 인증코드를 변경하여 해당 코드의 인증기능이 정상인지 확인할 수 있습니다. 예:

$id_card = '330102199509174133';

또는

$id_card = '330102199509174139';

이 두 ID 번호의 확인 코드가 잘못되어 확인을 통과할 수 없습니다. 그리고 코드를 실행하면 주민등록번호 확인 실패 결과가 출력되는 것을 볼 수 있어 우리 코드가 정상적으로 작동함을 증명하게 됩니다.

간단히 말하면, PHP 정규식을 사용하여 신분증 번호 확인 코드를 확인하는 방법은 비교적 간단합니다. 적절한 정규식과 관련 함수만 작성하면 쉽게 신분증 번호 확인을 완료할 수 있습니다.

위 내용은 PHP 정규식을 이용하여 신분증 번호의 체크코드를 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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