>  기사  >  백엔드 개발  >  PHP 정규식을 사용하여 지방 인증서 번호를 확인하는 방법

PHP 정규식을 사용하여 지방 인증서 번호를 확인하는 방법

PHPz
PHPz원래의
2023-06-24 10:53:181117검색

인터넷이 발달하면서 개인정보 유출은 무시할 수 없는 문제가 되었습니다. 예를 들어, ID 번호는 우리가 많은 일을 위해 제공해야 하는 중요한 신원 문서 중 하나입니다. 하지만, ID번호가 악의적으로 사용되거나 유출된다면 우리 생활에 많은 어려움을 가져올 것입니다. 개인정보 보호를 강화하기 위해 사용자가 입력한 ID 번호가 올바른지 확인하는 프로그램을 작성하는 것이 일반적인 방법입니다.

1. ID 번호의 구성 규칙
ID 번호를 확인하기 위해 정규식을 사용하기 전에 먼저 중국어 ID 번호의 구성 규칙을 이해해 보겠습니다.

1 18자리 ID 번호는 17자리와 1로 구성됩니다.
2. 처음 6자리는 해당 지역의 행정구역 코드입니다.
3. 7~14자리는 생년월일입니다. 예를 들어 870905는 1987년 9월 5일을 의미합니다. 4. 15~17번째 숫자는 내가 지역 호구관리부에 등록한 순서를 나타내는 일련번호입니다.
5. 18번째 숫자는 ID가 올바른지 확인하는 데 사용되는 확인 코드입니다. 카드.

2. PHP 정규식을 사용하여 ID 번호를 확인하세요

PHP에서는 preg_match() 함수를 사용하여 정규식을 일치시킵니다. 다음은 정규식을 사용하여 신분증 번호를 확인하는 PHP 코드입니다.

function validateIDCard($id_card)
{
    //正则表达式
    $reg = '/^d{17}[0-9x]$/i';
    //匹配
    if(preg_match($reg, $id_card))
    {
        //校验码验证
        $arr = str_split($id_card);
        $last = strtolower($arr[17]) == 'x' ? 10 : $arr[17];
        $card_sum = 0;
        $wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
        for($i = 0; $i < 17; $i++)
        {
            $card_sum += $arr[$i] * $wi[$i];
        }
        $card_sum %= 11;
        $card_sum = 12 - $card_sum;
        if($card_sum == 10)
        {
            $card_sum = 'x';
        }
        if($card_sum == strtolower($arr[17]))
        {
            return true;
        }
    }
    return false;
}

이 코드에서는 먼저 정규식 $reg를 정의하고, 이 정규식에서는 ^d{17}[ 0-9x]를 사용합니다. $는 18자리 ID 번호와 일치합니다. 여기서 d는 숫자를 나타내고, {17}은 일치하는 17자리 숫자를 나타내며, [0-9x]는 마지막 숫자가 숫자 또는 문자 x일 수 있음을 나타냅니다.

그런 다음 preg_match() 함수를 사용하여 정규 매칭을 수행합니다. 일치에 성공하면 이후의 인증코드 인증이 진행됩니다. 체크코드 검증은 주로 각 숫자의 곱에 고정된 인자를 곱하여 최종 검증하는 방식으로 이루어지며, 최종적으로 체크코드가 맞으면 ID번호가 맞는다는 뜻이다.

3. 요약

ID 번호의 정확성은 매우 중요합니다. 정확하지 않으면 우리 생활에 많은 문제를 가져올 수 있습니다. 프로그램을 작성하면 사용자가 입력한 ID 번호가 맞는지 확인할 수 있습니다. 이 글은 PHP 정규식을 사용하여 ID 번호를 확인하는 방법을 소개합니다. 이 글이 모든 사람에게 도움이 되기를 바랍니다.

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

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