注: 本代码仅供学习交流使用,请勿用于商业或其他违法行为,否则后果自负。
- 数据来源为 国家统计局,最新更新于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
*/
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位整个城市相同。