//身份证号获取个人信息
public function id_number(){
$id_number=input('id_number');
if(!isValid($id_number)){
return json(['code'=>403,'msg'=>'身份证号不正确']);
}
$arr['sex']=get_sex($id_number);
$arr['date_of_birth']=get_birthday($id_number);
$arr['add']=get_address($id_number);
return json(['code'=>200,'msg'=>'成功','data'=>$arr]);
}
//公共目录方法
//验证身份证号
function isValid($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 (!isAreaCodeValid($areaNum)) {
return false;
}
//验证日期
if (!isDateValid($dateNum)) {
return false;
}
//验证最后一位
if (!isVerifyCodeValid($num)) {
return false;
}
return true;
}//身份证号获取个人性别
function get_sex($idcard) {
$sex = substr($idcard, (strlen($idcard)==15 ? -2 : -1), 1) % 2 ? '1' : '0';
return $sex =$sex==1?'男':'女';//1为男 0为女
}
//身份证号获取个人生日
function get_birthday($idcard) {
$birthday = strlen($idcard)==15 ? ('19' . substr($idcard, 6, 6)) : substr($idcard, 6, 8);
$year = (int) substr($birthday, 0, 4);
$month = (int) substr($birthday, 4, 2);
$day = (int) substr($birthday, 6, 2);
return $year . "-" . $month . "-" . $day;
}
//计算年龄
function get_age($idcard){
if(empty($idcard)) return null;
# 获得出生年月日的时间戳
$date = strtotime(strlen($idcard)==15 ? ('19' . substr($idcard, 6, 6)) : substr($idcard, 6, 8));
# 获得今日的时间戳
$today = strtotime('today');
# 得到两个日期相差的大体年数
$diff = floor(($today-$date)/86400/365);
# strtotime加上这个年数后得到那日的时间戳后与今日的时间戳相比
$age = strtotime(strlen($idcard)==15 ? ('19' . substr($idcard, 6, 6)) : substr($idcard, 6, 8).'+'.$diff.'years')>$today?($diff+1):$diff;
return $age;
}
//获取身份证地址
function get_address($idcard){
$province=substr($idcard, 0, 2).'0000';
$a=db('nation')->where('code',$province)->find();
$city=substr($idcard, 0, 4).'00';
$b=db('nation')->where('code',$city)->find();
$area=substr($idcard, 0, 6);
$c=db('nation')->where('code',$area)->find();
$add['province']=$a['id'];
$add['city']=$b['id'];
$add['area']=$c['id'];
$add['address']=$a['name'].$b['name'].$c['name'];
return $add;
}
/** * 根据身份证号,返回对应的生肖 * author:xiaochuan * @param string $idcard 身份证号码 */
function get_zodiac($idcard){ //
if(empty($idcard)) return null;
$start = 1901;
$end = (int)substr($idcard, 6, 4);
$x = ($start - $end) % 12;
$val = '';
if ($x == 1 || $x == -11) $val = '鼠';
if ($x == 0)$val = '牛';
if ($x == 11 || $x == -1) $val = '虎';
if ($x == 10 || $x == -2) $val = '兔';
if ($x == 9 || $x == -3) $val = '龙';
if ($x == 8 || $x == -4) $val = '蛇';
if ($x == 7 || $x == -5) $val = '马';
if ($x == 6 || $x == -6) $val = '羊';
if ($x == 5 || $x == -7) $val = '猴';
if ($x == 4 || $x == -8) $val = '鸡';
if ($x == 3 || $x == -9) $val = '狗';
if ($x == 2 || $x == -10) $val = '猪';
return $val;
}
/** * 根据身份证号,返回对应的星座 * author:xiaochuan * @param string $idcard 身份证号码 */
function get_starsign($idcard){
if(empty($idcard)) return null;
$b = substr($idcard, 10, 4);
$m = (int)substr($b, 0, 2);
$d = (int)substr($b, 2); $val = '';
if(($m == 1 && $d <= 21) || ($m == 2 && $d <= 19)){
$val = "水瓶座";
}else if (($m == 2 && $d > 20) || ($m == 3 && $d <= 20)){
$val = "双鱼座";
}else if (($m == 3 && $d > 20) || ($m == 4 && $d <= 20)){
$val = "白羊座";
}else if (($m == 4 && $d > 20) || ($m == 5 && $d <= 21)){
$val = "金牛座";
}else if (($m == 5 && $d > 21) || ($m == 6 && $d <= 21)){
$val = "双子座";
}else if (($m == 6 && $d > 21) || ($m == 7 && $d <= 22)){
$val = "巨蟹座";
}else if (($m == 7 && $d > 22) || ($m == 8 && $d <= 23)){
$val = "狮子座";
}else if (($m == 8 && $d > 23) || ($m == 9 && $d <= 23)){
$val = "处女座";
}else if (($m == 9 && $d > 23) || ($m == 10 && $d <= 23)){
$val = "天秤座";
}else if (($m == 10 && $d > 23) || ($m == 11 && $d <= 22)){
$val = "天蝎座";
}else if (($m == 11 && $d > 22) || ($m == 12 && $d <= 21)){
$val = "射手座";
}else if (($m == 12 && $d > 21) || ($m == 1 && $d <= 20)){
$val = "魔羯座";
}
return $val;
}
徐天命
- 粉丝: 14
- 资源: 6
最新资源
- 百度Google比拼企业文化:从硬竞争到软竞争.doc
- 华为的企业文化集中体现为它的.doc
- 华为基本法.doc
- 中国企业文化理论创新与实践.ppt
- 惠普文化.doc
- 肯德基企业文化(DOC+2页).doc
- 通用电气的企业文化和管理.doc
- 沃尔玛的企业文化.doc
- 英特尔公司企业文化建设.doc
- 张瑞敏企业文化管理箴言100句.doc
- 中国电信企业文化及人力资源管理变革.doc
- TCL的“合金式”企业文化.docx
- 中国电信企业文化宣贯培训参考教材.doc
- 伦敦的房屋数据集,伦敦房屋价格数据集(包含地址,房型,面积,年龄,售价等)
- 《学术规范与论文写作》课程论文PDF
- 【企业文化分析模型-5】Chatman的组织文化剖面图(OCP).docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈