웹사이트 개발 과정에서 사용자가 입력한 데이터에 대한 검증이 필요한 경우가 종종 있는데, 이에 관련된 ID번호에 대한 검증은 매우 중요한 부분입니다. 주민등록번호는 개인의 신원을 증명하는 유일한 수단이므로 주민등록번호의 정확성을 확인하는 것이 중요합니다. 이 기사에서는 PHP 정규식을 사용하여 ID 번호의 정확성을 확인하는 방법을 소개합니다.
ID번호 기본 규칙
ID번호는 18자리 숫자와 문자(X)로 구성되며, 처음 17자리는 고정된 형식이며 마지막 숫자는 숫자 또는 "X"일 수 있습니다. 주민번호 앞 6자리는 지역번호, 가운데 8자리는 생년월일, 마지막 4자리는 지역, 성별, 일련번호로 구성된 체크코드입니다. 그 중 지역번호, 생년월일, 체크코드에는 정해진 규칙이 있습니다.
ID번호 확인
PHP에서 preg_match 함수를 사용하면 쉽게 ID번호를 확인할 수 있습니다. preg_match 함수의 첫 번째 매개변수는 일치시킬 정규식이고, 두 번째 매개변수는 일치시킬 문자열입니다. 예는 다음과 같습니다.
$pattern = '/^d{17}[Xd]$/';
$id = '110101199001011234' //확인할 ID 번호
if (preg_match($pattern, $id ) ) {
//身份证号码格式正确
} else {
//身份证号码格式错误
}
위 코드에서는 정규식 $pattern을 사용하여 ID 번호를 확인합니다. ID 번호는 17자리 숫자와 숫자 또는 문자 "X"로 구성되어야 함을 나타냅니다. 다음으로, ID 번호의 여러 부분이 어떻게 일치해야 하는지 자세히 설명하겠습니다.
지역번호 일치
신분증 번호 앞 6자리는 지역번호로, 해당 신분증 번호가 위치한 행정구역을 나타냅니다. 그 중 처음 두 자리는 도를 나타내고, 마지막 네 자리는 시 또는 군을 나타냅니다. 지역번호는 주정부에 의해 통일적으로 부여되며, 각 행정 구역에는 해당 코드가 있습니다.
다음 정규 표현식을 사용하여 지역 코드를 일치시킬 수 있습니다:
$area_pattern = '/^([1-9]d|([1-9][0-9])d{4})$/' ;
$area_code = substr($id, 0, 6); //ID 번호에서 지역 번호의 처음 6자리를 가져옵니다
if (preg_match($area_pattern, $area_code)) {
//区域代码格式正确
} else {
//区域代码格式错误
}
위 코드에서는 지역번호를 일치시키기 위해 정규식 $area_pattern을 사용했습니다. 지역번호는 6자리로 구성되어야 함을 나타냅니다. $area_code는 ID 번호에서 지역 번호의 처음 6자리를 추출하는 데 사용됩니다.
생년월일 일치
신분증 번호 가운데 8자리는 생년월일로 소지자의 생년월일을 나타냅니다. 그 중 처음 4자리는 연도를 나타내고, 마지막 2자리는 월, 마지막 2자리는 일수를 나타냅니다. 생년월일은 연도가 현재 연도를 초과할 수 없는 등 특정 규칙을 준수해야 합니다.
다음 정규식을 사용하여 정확한 생년월일을 일치시킬 수 있습니다.
$birthday_pattern = '/^((19|20)d{2})(0[1-9]|1[012])( 0 [1-9]|[12][0-9]|3[01])$/';
$birthday = substr($id, 6, 8) //중간 생년월일 8자리를 빼냅니다. ID 번호 Date
if (preg_match($birthday_pattern, $birthday)) {
//出生日期格式正确
} else {
//出生日期格式错误
}
위 코드에서는 정규식 $birthday_pattern을 사용하여 정확한 생년월일을 일치시킵니다. 생년월일은 연도를 나타내는 4자리, 월을 나타내는 2자리, 일을 나타내는 2자리로 구성되어야 함을 나타냅니다. $birthday는 ID번호에서 가운데 8자리 생년월일을 추출하는데 사용됩니다.
일치하는 인증코드
ID번호 마지막 자리는 인증번호로, ID번호가 맞는지 확인하는 데 사용됩니다. 체크코드는 처음 17자리부터 계산되며 지역, 성별, 일련번호 등의 정보로 구성됩니다. 특정 알고리즘을 통해 체크코드를 얻을 수 있으며, ID번호 마지막 숫자와 동일하면 ID번호가 맞는 것입니다.
다음 정규 표현식을 사용하여 검사 코드를 일치시킬 수 있습니다:
$check_code_pattern = '/^d{17}[Xd]$/';
if (preg_match($check_code_pattern, $id)) {
$n = 0; for ($i = 0; $i < 17; $i++) { $n += $id[$i] * pow(2, 17 - $i) % 11; } $check_code = $n % 11 == 1 ? 'X' : (12 - $n % 11); if ($check_code == substr($id, -1)) { //身份证号码校验通过 } else { //身份证号码校验失败 }
} else {
//身份证号码格式错误
}
위 코드에서 정규식 $check_code_pattern은 ID 번호가 처음 17자리와 마지막 숫자 또는 문자 "X"의 형식과 일치하는지 확인하는 데 사용됩니다. ID 번호의 형식이 올바른 경우 특정 알고리즘을 사용하여 체크 코드 $check_code를 계산하고 ID 번호의 마지막 숫자와 비교하십시오.
요약
이 글에서는 PHP 정규식을 사용하여 신분증 번호의 정확성을 확인하는 방법을 소개합니다. ID번호는 유일한 개인 식별 수단이므로 웹사이트 개발 시 ID번호 확인은 매우 중요합니다. 이 기사의 소개를 통해 누구나 쉽게 PHP 정규식을 사용하여 ID 번호를 확인할 수 있다고 믿습니다.
위 내용은 ID 번호의 정확성을 확인하는 PHP 정규식의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!