> 백엔드 개발 > PHP 튜토리얼 > PHP는 ID 번호가 올바른 예제 코드인지 확인합니다.

PHP는 ID 번호가 올바른 예제 코드인지 확인합니다.

怪我咯
풀어 주다: 2023-03-13 15:30:01
원래의
2649명이 탐색했습니다.

신분증 번호의 구조

신분증 번호는 17자리의 본문 코드와 1비트의 검사 코드로 구성된 특징적인 조합 코드입니다.

왼쪽부터 순서대로 주소코드 6자리, 생년월일 코드 8자리, 일련번호 3자리, 체크코드 1자리입니다.

주소 코드(처음 6자리)

는 코딩 대상이 위치한 군(시, 배너, 구)의 행정 구역 코드를 나타내며, 영주권이 위치한 지역(시, 배너, 구)을 나타냅니다. GB/T2260 규정에 따라 구현됩니다.

생년월일 코드(7~14자리)


는 인코딩 대상이 태어난 연도, 월, 일을 나타내며 GB/T7408 조항에 따라 구현됩니다. 연도, 월, 일 코드입니다.

일련번호(15~17자리)


는 동일한 주소로 식별되는 지역 내에서 같은 연도, 같은 월, 같은 날에 태어난 사람들에게 부여된 일련번호를 나타냅니다. 남성에게는 짝수 번호가 할당됩니다.

코드 확인(18자리)


1. 17자리 온톨로지 코드의 가중합산식


S= SUM(Ai * Wi), i=0, ... , 16, first 처음 17자리.


Ai: i번째 위치의 ID 번호의 디지털 값을 나타냅니다.


Wi: i번째 위치의 가중치를 나타냅니다.


Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2

2 계수를 계산합니다.


Y = mod(S, 11)

3 계수를 통해 해당 검사 코드


Y를 얻습니다. 0 1 2 3 4 5 6 7 8 9 10


코드 확인: 1 0 ID 번호");

if($idc){echo "올바른";}else{echo "잘못된";}

예 2:


/********************php验证身份证号码是否正确函数*********************/ 
function is_idcard( $id ) 
{ 
  $id = strtoupper($id); 
  $regx = "/(^\d{15}$)|(^\d{17}([0-9]|X)$)/"; 
  $arr_split = array(); 
  if(!preg_match($regx, $id)) 
  { 
    return FALSE; 
  } 
  if(15==strlen($id)) //检查15位 
  { 
    $regx = "/^(\d{6})+(\d{2})+(\d{2})+(\d{2})+(\d{3})$/"; 
 
    @preg_match($regx, $id, $arr_split); 
    //检查生日日期是否正确 
    $dtm_birth = "19".$arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4]; 
    if(!strtotime($dtm_birth)) 
    { 
      return FALSE; 
    } else { 
      return TRUE; 
    } 
  } 
  else      //检查18位 
  { 
    $regx = "/^(\d{6})+(\d{4})+(\d{2})+(\d{2})+(\d{3})([0-9]|X)$/"; 
    @preg_match($regx, $id, $arr_split); 
    $dtm_birth = $arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4]; 
    if(!strtotime($dtm_birth)) //检查生日日期是否正确 
    { 
      return FALSE; 
    } 
    else 
    { 
      //检验18位身份证的校验码是否正确。 
      //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。 
      $arr_int = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); 
      $arr_ch = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); 
      $sign = 0; 
      for ( $i = 0; $i < 17; $i++ ) 
      { 
        $b = (int) $id{$i}; 
        $w = $arr_int[$i]; 
        $sign += $b * $w; 
      } 
      $n = $sign % 11; 
      $val_num = $arr_ch[$n]; 
      if ($val_num != substr($id,17, 1)) 
      { 
        return FALSE; 
      } //phpfensi.com 
      else 
      { 
        return TRUE; 
      } 
    } 
  } 
 
}
로그인 후 복사

위 내용은 PHP는 ID 번호가 올바른 예제 코드인지 확인합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿