项目作者: vvk

项目描述 :
A package for ID card number attribution query, ID card number generation, 15-digit ID card number conversion to 18-digit ID card number
高级语言: PHP
项目地址: git://github.com/vvk/id-card.git
创建时间: 2020-10-03T06:44:16Z
项目社区:https://github.com/vvk/id-card

开源协议:

下载


身份证号码归属地查询、身份证号码生成、15位身份证号转18位

注: 本代码仅供学习交流使用,请勿用于商业或其他违法行为,否则后果自负。

说明

  • 数据来源为 国家统计局,最新更新于2019年10月31日。
  • 仅支持中国大陆的身份证号

功能

  • 身份证号归属地查询,包括省、城市、区/县
  • 根据省、市、区/县及出生日期生成身份证号
  • 15位短身份证号码生成18位身份证证号码

安装

使用 composer 安装:

  1. composer require vvk/id-card

使用

身份证号码归属地查询

  1. include "vendor/autoload.php";
  2. use Vvk\IdCard\IdCard;
  3. $idCard = '110101192009309116';
  4. $location = IdCard::parse($idCard);//支持15位、18位身份证号
  5. print_r($location);
  6. /*
  7. 结果:
  8. Array
  9. (
  10. [province] => 北京市
  11. [city] => 北京市
  12. [district] => 东城区
  13. [area] => 北京市 北京市 东城区
  14. [date] => 1920-09-30
  15. [sex] => 男
  16. [constellation] => 天秤座
  17. )
  18. */

身份证号码生成

  1. include "vendor/autoload.php";
  2. use Vvk\IdCard\IdCard;
  3. //通过 IdCard::getLocation() 获取到的对应的区、县code
  4. //广东东莞市、广东中山市、海南儋州三个城市下面没有区、县,只在在对应的城市后面补助 00 组成6位字符串即可
  5. $location = '110101';
  6. // 日期格式为 YYYmmdd
  7. $date = '20201003';
  8. $result = IdCard::generate($location, $date, 1);
  9. echo $result.PHP_EOL;
  10. /**
  11. 结果:
  12. 110101202010035331
  13. */

15位身份证号码转18位

  1. include "vendor/autoload.php";
  2. use Vvk\IdCard\IdCard;
  3. $idCard = '320506720102256';
  4. $result = IdCard::getLongIdCard($idCard);
  5. echo $result.PHP_EOL;
  6. /*
  7. 结果:
  8. 320506197201022567
  9. */

数据更新

身份证号前6位为归属地,可以从 国家统计局 获取,由于数据可能会变化(感觉机率比较小,毕竟身份证号不会变化 ),会造成身份证号识别不准确的情况,所以数据需要定时更新,可以通过下面的方式更新:

  1. include "vendor/autoload.php";
  2. use Vvk\IdCard\UpdateLocation;
  3. UpdateLocation::run();

说明

  • 如果结果返回空,可以使用方法 IdCard::getError() 获取失败原因。
  • 广东东莞市、广东中山市、海南儋州市三个城市下面不再区分区、县,即前6位整个城市相同。