vvk / id-card
一个用于身份证号归属地查询、身份证号生成、15位身份证号转18位身份证号的包
v1.0.1
2021-01-08 06:51 UTC
Requires
- php: ^7.0
- guzzlehttp/guzzle: ~6.0
This package is auto-updated.
Last update: 2024-10-27 15:56:40 UTC
README
注: 本代码仅供学习交流使用,请勿用于商业或其他违法行为,否则后果自负。
说明
- 数据来源为 国家统计局,最新更新于2019年10月31日。
- 仅支持中国大陆的身份证号
功能
- 身份证号归属地查询,包括省、城市、区/县
- 根据省、市、区/县及出生日期生成身份证号
- 15位短身份证号码生成18位身份证证号码
安装
使用 composer 安装:
composer require vvk/id-card
使用
身份证号码归属地查询
include "vendor/autoload.php"; use Vvk\IdCard\IdCard; $idCard = '110101192009309116'; $location = IdCard::parse($idCard);//支持15位、18位身份证号 print_r($location); /* 结果: Array ( [province] => 北京市 [city] => 北京市 [district] => 东城区 [area] => 北京市 北京市 东城区 [date] => 1920-09-30 [sex] => 男 [constellation] => 天秤座 ) */
身份证号码生成
include "vendor/autoload.php"; use Vvk\IdCard\IdCard; //通过 IdCard::getLocation() 获取到的对应的区、县code //广东东莞市、广东中山市、海南儋州三个城市下面没有区、县,只在在对应的城市后面补助 00 组成6位字符串即可 $location = '110101'; // 日期格式为 YYYmmdd $date = '20201003'; $result = IdCard::generate($location, $date, 1); echo $result.PHP_EOL; /** 结果: 110101202010035331 */
15位身份证号码转18位
include "vendor/autoload.php"; use Vvk\IdCard\IdCard; $idCard = '320506720102256'; $result = IdCard::getLongIdCard($idCard); echo $result.PHP_EOL; /* 结果: 320506197201022567 */
数据更新
身份证号前6位为归属地,可以从 国家统计局 获取,由于数据可能会变化(感觉机率比较小,毕竟身份证号不会变化 ),会造成身份证号识别不准确的情况,所以数据需要定时更新,可以通过下面的方式更新:
include "vendor/autoload.php"; use Vvk\IdCard\UpdateLocation; UpdateLocation::run();
说明
- 如果结果返回空,可以使用方法
IdCard::getError()
获取失败原因。 - 广东东莞市、广东中山市、海南儋州市三个城市下面不再区分区、县,即前6位整个城市相同。