身份证格式解析
身份证号码格式解析:校验 15/18 位与校验码,解析生日、性别、省份、城市、区县等,不联网核验
身份证号码格式解析(仅算法,不联网核验):
校验 15/18 位格式与 18 位校验码;解析出生年月日、性别(由顺序码奇偶判断)。
校验 15/18 位格式与 18 位校验码;解析出生年月日、性别(由顺序码奇偶判断)。
调用地址:https://api.ynlskj.com.cn/gateway/idparse
请求方法:POST
在其他地方怎么调用
- 请求地址用上面的调用地址,把 JSON 放在请求体里
- 方法用
POST - API Key 只能放在请求头
X-API-Key,不要写进网址,也不要写进 Query 框 - Key 在「个人中心 → API Key」里复制,登录后会自动填入你自己的 Key
参数说明
| 参数 | 位置 | 必填 | 说明 |
|---|---|---|---|
idcard | Body JSON | 是 | 15 位或 18 位身份证号,18 位末位可为 X。也可用 id_card、id |
X-API-Key | Header | 是 | 你的 API Key |
原理说明(性别怎么来的)
不需要联网、不需要数据库。身份证号里顺序码的最后一位(18 位是倒数第二位)用来区分同一天同地区登记的顺序:奇数为男,偶数为女。
| 位数 | 含义 |
|---|---|
| 18 位:第 7–14 位 | YYYYMMDD 出生年月日 |
| 18 位:第 17 位 | 性别位,奇数男、偶数女 |
| 18 位:第 18 位 | 校验码(由前 17 位按国标公式算出,可为 0–9 或 X) |
| 前 6 位 | region_code 行政区划码,本站内置民政部县级区划包(约 3000 条),可解析省/市/区县 |
| 15 位:第 7–12 位 | YYMMDD,年份按 19XX 理解 |
| 15 位:第 15 位 | 性别位,奇数男、偶数女 |
请求示例
| 场景 | Body 示例 |
|---|---|
| 18 位身份证 | {"idcard":"110101199003078515"} |
| 15 位老身份证 | {"idcard":"110101900307851"} |
本接口仅做格式与校验码校验,不核验姓名是否匹配、不查公安库。需要实名核验请用「实名认证 idcard」接口。
地区数据内置民政部县级区划(现行约 3000 条 + 历史约 3000 条)。老旧身份证上的区划码(如 532225)会标记 region_legacy=true;数据可通过 php cli/build_idcard_regions.php 更新。
返回说明
| 字段 | 说明 |
|---|---|
ret | ok 成功,err 失败 |
data.idcard | 规范化后的身份证号(大写 X) |
data.valid | 格式与校验码是否通过,成功时为 true |
data.length | 15 或 18 |
data.region_code | 前 6 位地区码 |
data.province / city / district | 省、市、区县名称 |
data.region | 完整地区文字,如「北京市东城区」 |
data.region_matched | 匹配精度:district 区县、city 市级、province 省级、none 未命中 |
data.region_legacy | 是否为历史区划码(身份证上的旧码,现行码已变更)。true 时地区名称按发证年代解析 |
data.birthday | 出生日期 YYYY-MM-DD |
data.sex / sex_code | 男/女;1 男、2 女 |
data.sex_digit | 用于判断性别的数字位(18 位为第 17 位,15 位为第 15 位) |
data.checksum_ok | 18 位时校验码是否正确;15 位恒为 false |
data.note | 提示:仅格式解析,不联网核验 |
msg | 本站提示,如「次数充足,剩余 99 次」或「次数不足,剩余 0 次」 |
remain_quota | 本次调用后的剩余次数 |
可直接复制的代码
未登录时示例只显示「你的密钥」。登录后会自动填入你自己的 Key,不会展示别人的。
<?php
$ch = curl_init('https://api.ynlskj.com.cn/gateway/idparse');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['X-API-Key: 你的密钥', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{
"idcard": "110101199003078515"
}',
]);
echo curl_exec($ch);
请求参数演示
{"idcard":"110101199003078515"}
响应演示
{"ret":"ok","data":{"idcard":"110101199003078515","valid":true,"length":18,"region_code":"110101","birthday":"1990-03-07","birth_year":1990,"birth_month":3,"birth_day":7,"sex":"男","sex_code":1,"sex_digit":1,"checksum_ok":true,"note":"仅格式解析,不联网核验身份真实性"}}