PHP 확인 ID 카드 형식
인터넷 기업에서는 신분증 인증에 대한 요구가 늘어나고 있지만 일반 소규모 기업에서는 공안부의 신원 인증 시스템에 연결할 수 없습니다. 일부 대형 인터넷 회사의 거의 모든 인증 서비스는 온라인으로 구매됩니다. 더 저렴한 인증 가격도 100,000회/10,000위안에 이릅니다. 한 번에 1센트밖에 안 들지만 꽤 비쌉니다. 따라서, 회사의 비용 절감을 위해, 본인 인증을 위해 이용자가 제출한 신분증 정보를 받기 전, 신분증의 형식을 직접 확인하여야 하며, 가장 기본적인 신분증 형식이 만족스럽지 못한 경우에는 당사에서 직접 거부할 수 있습니다. 인증을 위해 돈을 쓰는 다음 과정을 거치지 않고도 사용자 ID 카드 테이블을 만들어 각 인증을 통과한 데이터를 저장할 수도 있습니다. 앞으로는 먼저 사용자 ID 카드 테이블을 직접 쿼리하게 됩니다. 시스템을 통해 매번 인증 프로세스를 진행하여 기업의 비용 절감을 극대화하세요.
신분증 형식에 대한 사전 검증을 위한 PHP 신분증 확인 수업입니다. 이 클래스는 사용이 매우 간단한 정적 메소드 isValid
인터페이스만 제공합니다. 확인하려면 IdentityCard::isValid
만 사용하면 됩니다. 도구 클래스로 자신의 프로젝트에 넣을 수 있습니다. 이 방법을 사용하면 기존 신분증 15자리와 신규 신분증 형식 18자리를 동시에 확인할 수 있습니다. isValid
接口,使用起来也很简单,只需要使用IdentityCard::isValid
即可验证。可以放到自己项目中当做工具类。该方法可以同时验证15位的老身份证和18位的新身份证格式
PHP版本: >=7.0.0
PHP 버전: >=7.0.0
참고: PHP 버전이 다음 버전보다 낮은 경우 버전 7.0에서만 클래스의 메소드에 대한 매개변수 제한을 제거하여 사용할 수 있습니다.
class IdentityCard { /** * 校验身份证号是否合法 * @param string $num 待校验的身份证号 * @return bool */ public static function isValid(string $num) { //老身份证长度15位,新身份证长度18位 $length = strlen($num); if ($length == 15) { //如果是15位身份证 //15位身份证没有字母 if (!is_numeric($num)) { return false; } // 省市县(6位) $areaNum = substr($num, 0, 6); // 出生年月(6位) $dateNum = substr($num, 6, 6); } else if ($length == 18) { //如果是18位身份证 //基本格式校验 if (!preg_match('/^\d{17}[0-9xX]$/', $num)) { return false; } // 省市县(6位) $areaNum = substr($num, 0, 6); // 出生年月日(8位) $dateNum = substr($num, 6, 8); } else { //假身份证 return false; } //验证地区 if (!self::isAreaCodeValid($areaNum)) { return false; } //验证日期 if (!self::isDateValid($dateNum)) { return false; } //验证最后一位 if (!self::isVerifyCodeValid($num)) { return false; } return true; } /** * 省市自治区校验 * @param string $area 省、直辖市代码 * @return bool */ private static function isAreaCodeValid(string $area) { $provinceCode = substr($area, 0, 2); // 根据GB/T2260—999,省市代码11到65 if (11 <= $provinceCode && $provinceCode <= 65) { return true; } else { return false; } } /** * 验证出生日期合法性 * @param string $date 日期 * @return bool */ private static function isDateValid(string $date) { if (strlen($date) == 6) { //15位身份证号没有年份,这里拼上年份 $date = '19'.$date; } $year = intval(substr($date, 0, 4)); $month = intval(substr($date, 4, 2)); $day = intval(substr($date, 6, 2)); //日期基本格式校验 if (!checkdate($month, $day, $year)) { return false; } //日期格式正确,但是逻辑存在问题(如:年份大于当前年) $currYear = date('Y'); if ($year > $currYear) { return false; } return true; } /** * 验证18位身份证最后一位 * @param string $num 待校验的身份证号 * @return bool */ private static function isVerifyCodeValid(string $num) { if (strlen($num) == 18) { $factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; $tokens = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; $checkSum = 0; for ($i = 0; $i < 17; $i++) { $checkSum += intval($num{$i}) * $factor[$i]; } $mod = $checkSum % 11; $token = $tokens[$mod]; $lastChar = strtoupper($num{17}); if ($lastChar != $token) { return false; } } return true; } }
사용예:
// 测试 $num = '33071919610920021X'; if (IdentityCard::isValid($num)) { echo '身份证格式正确'; } else { echo '身份证格式不正确'; }
다음은 신분증 인코딩 각 부분의 의미입니다.
//=============新的18位身份证号码各位的含义:======================= //1-2位省、自治区、直辖市代码;11-65 //3-4位地级市、盟、自治州代码; //5-6位县、县级市、区代码; //7-14位出生年月日,比如19670401代表1967年4月1日; //15-17位为顺序号,其中17位男为单数,女为双数; //18位为校验码,0-9和X,由公式随机产生。 //举例: //130503 19670401 0012这个身份证号的含义: 13为河北,05为邢台,03为桥西区,出生日期为1967年4月1日,顺序号为001,2为验证码 //===========15位身份证号码各位的含义:======================= //1-2位省、自治区、直辖市代码; //3-4位地级市、盟、自治州代码; //5-6位县、县级市、区代码; //7-12位出生年月日,比如670401代表1967年4月1日,这是和18位号码的第一个区别; //13-15位为顺序号,其中15位男为单数,女为双数; //与18位身份证号的第二个区别:没有最后一位的验证码。 //举例: //130503 670401 001的含义; 13为河北,05为邢台,03为桥西区,出生日期为1967年4月1日,顺序号为001。
위 내용은 PHP 확인 ID 카드 형식의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이번 장에서는 CakePHP의 환경 변수, 일반 구성, 데이터베이스 구성, 이메일 구성에 대해 알아봅니다.

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는
