>  기사  >  백엔드 개발  >  PHP 정규식을 사용하여 신분증 형식을 확인하는 방법

PHP 정규식을 사용하여 신분증 형식을 확인하는 방법

PHPz
PHPz원래의
2023-06-24 10:34:291407검색

ID 카드는 웹사이트, 앱, 기타 애플리케이션의 경우 사용자가 입력한 ID 번호가 사양을 충족하는지 확인하는 중요한 문서입니다. PHP는 이 기능을 수행하는 매우 편리한 방법, 즉 정규 표현식을 사용하는 방법을 제공합니다.

이 글에서는 PHP 정규 표현식을 사용하여 ID 번호의 올바른 형식을 확인하는 방법을 소개합니다.

1. 신분증 번호 형식

PHP 정규식을 사용하여 신분증 번호 형식을 확인하기 전에 먼저 신분증 번호 형식 규정을 이해해야 합니다. 중국의 ID 카드 번호 형식은 총 18자리이며 처음 17자리는 숫자, 마지막 자리는 체크 코드(숫자 또는 대문자일 수 있음)입니다.

구체적인 규정은 다음과 같습니다.

  1. 처음 6자리는 주소코드로 거주지의 행정구역 코드를 나타냅니다.
  2. 다음은 YYYYMMDD 형식의 생년월일 8자리입니다.
  3. 다음 4자리는 일련번호로, 동일한 주소 지역 내 출생의 일련번호를 나타내며, 마지막 숫자는 성별 식별자입니다. 홀수는 남자, 짝수는 여자입니다.
  4. 마지막 숫자는 체크 코드이며 숫자 또는 문자 X일 수 있습니다.

이제 ID 번호의 형식을 알았으므로 PHP 정규 표현식을 사용하여 정확성을 확인할 수 있습니다.

2. 정규식 검증

정규식 검증은 일반적으로 preg_match 함수를 사용하며 구문은 다음과 같습니다.

preg_match($pattern, $subject);

그 중 $pattern은 정규식을 나타내고, $subject는 검증이 필요한 문자열을 나타냅니다. . 일치에 성공하면 1을 반환하고, 그렇지 않으면 0을 반환합니다.

다음으로 ID 번호의 형식을 확인할 수 있는 정규식을 작성해야 합니다. 구체적인 구현 방법은 다음과 같습니다.

  1. 먼저 d를 사용하여 숫자를 일치시키고 [xXd]를 사용하여 X 또는 x 또는 숫자를 일치시킵니다.
  2. 그런 다음 {18}을 사용하여 18회 반복을 나타냅니다.
  3. 다음으로 처음 6자리에 간격 제한을 추가하고 정규식 /^([1-9]d{5})/를 사용하여 첫 번째 숫자는 1-9이고 다음 5자리는 임의의 숫자임을 나타냅니다.
  4. 첫 번째 날짜를 나타내기 위해 정규식 /(d{4})([0-9]{2})([0-9]{2})/를 사용하여 8자리 생년월일에 간격 제한을 추가합니다. 4 숫자는 임의의 숫자일 수 있으며, 마지막 두 자리 범위는 00부터 99까지이고 마지막 두 자리 역시 00부터 99까지입니다.
  5. 시퀀스 코드에 정규식 /(d{3})(d{3})(d{2})(d[xXd])/를 사용하여 처음 3자리는 임의의 숫자이고 중간 3자리는 숫자임을 나타냅니다. 숫자는 임의의 숫자이고, 마지막 두 자리도 임의의 숫자이며, 마지막 숫자는 숫자 또는 문자 X일 수 있습니다.

요약하면 최종 정규식을 얻을 수 있습니다.

/^([1-9]d{5})(d{4})([0-9]{2})([0-9]{2})(d{3})(d{3})(d{2})(d[xXd])$/

PHP 정규식을 사용하여 ID 번호를 확인하려면 preg_match 함수가 필요합니다. 코드 예시는 다음과 같습니다.

function check_id_card($id_card) {
    // 加上正则表达式
    $reg = '/^([1-9]d{5})(d{4})([0-9]{2})([0-9]{2})(d{3})(d{3})(d{2})([dxX])$/';
    if (preg_match($reg, $id_card, $matches)) {
        // 校验地址码
        if (!check_address_code($matches[1])) {
            return false;
        }
        // 校验出生日期
        if (!check_birthday($matches[2] . "-" . $matches[3] . "-" . $matches[4])) {
            return false;
        }
        // 校验顺序码
        if (!check_order_code($matches[5])) {
            return false;
        }
        // 校验校验码
        if (!check_verify_code($matches[0])) {
            return false;
        }
        return true;
    }
    return false;
}

그 중 check_address_code, check_birthday, check_order_code, check_verify_code 이 기능은 각각 주소 코드, 생년월일, 시퀀스 코드 및 검사 코드의 정확성을 확인하는 데 사용되며 특정 상황에 따라 구현되어야 합니다.

3. 요약

위의 방법을 통해 PHP 정규식을 사용하여 ID 번호의 정확성을 확인할 수 있습니다. ID 번호의 검증은 형식의 문제일 뿐만 아니라 주소 코드가 합법적인지, 생년월일이 합리적인 범위 내에 있는지, 시퀀스 코드의 성별 식별자가 맞는지 등을 고려해야 합니다. 규정 등을 준수합니다. 따라서 코드 구현을 고려해야 합니다. 많은 요소가 검증 결과의 정확성과 신뢰성을 보장합니다.

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

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