使用php从身份证号中获取一系列线索(星座、生肖、生日等)


Posted in PHP onMay 11, 2016

本文第一个实例为大家分享了PHP根据身份证号,自动获取对应的星座函数,供大家参考,具体内容如下

<?php

function get_xingzuo($cid) { // 根据身份证号,自动返回对应的星座
  if (!isIdCard($cid)) return '';
  $bir = substr($cid,10,4);
  $month = (int)substr($bir,0,2);
  $day = (int)substr($bir,2);
  $strValue = '';
  if (($month == 1 && $day >= 20) || ($month == 2 && $day <= 18)) {
    $strValue = "水瓶座";
  } else if (($month == 2 && $day >= 19) || ($month == 3 && $day <= 20)) {
    $strValue = "双鱼座";
  } else if (($month == 3 && $day > 20) || ($month == 4 && $day <= 19)) {
    $strValue = "白羊座";
  } else if (($month == 4 && $day >= 20) || ($month == 5 && $day <= 20)) {
    $strValue = "金牛座";
  } else if (($month == 5 && $day >= 21) || ($month == 6 && $day <= 21)) {
    $strValue = "双子座";
  } else if (($month == 6 && $day > 21) || ($month == 7 && $day <= 22)) {
    $strValue = "巨蟹座";
  } else if (($month == 7 && $day > 22) || ($month == 8 && $day <= 22)) {
    $strValue = "狮子座";
  } else if (($month == 8 && $day >= 23) || ($month == 9 && $day <= 22)) {
    $strValue = "处女座";
  } else if (($month == 9 && $day >= 23) || ($month == 10 && $day <= 23)) {
    $strValue = "天秤座";
  } else if (($month == 10 && $day > 23) || ($month == 11 && $day <= 22)) {
    $strValue = "天蝎座";
  } else if (($month == 11 && $day > 22) || ($month == 12 && $day <= 21)) {
    $strValue = "射手座";
  } else if (($month == 12 && $day > 21) || ($month == 1 && $day <= 19)) {
    $strValue = "魔羯座";
  }
  return $strValue;
   
}
function get_shengxiao($cid) { //根据身份证号,自动返回对应的生肖
  if (!isIdCard($cid)) return '';
  $start = 1901;
  $end = $end = (int)substr($cid,6,4);
  $x = ($start - $end) % 12;
  $value = "";    
  if ($x == 1 || $x == -11) {$value = "鼠";}
  if ($x == 0) { $value = "牛";}
  if ($x == 11 || $x == -1) {$value = "虎";}
  if ($x == 10 || $x == -2) {$value = "兔";}
  if ($x == 9 || $x == -3) {$value = "龙";}
  if ($x == 8 || $x == -4) {$value = "蛇";}
  if ($x == 7 || $x == -5) {$value = "马";}
  if ($x == 6 || $x == -6) {$value = "羊";}
  if ($x == 5 || $x == -7) {$value = "猴";}
  if ($x == 4 || $x == -8) {$value = "鸡";}
  if ($x == 3 || $x == -9) {$value = "狗";}
  if ($x == 2 || $x == -10) {$value = "猪";}
  return $value;
}
function get_xingbie($cid) { //根据身份证号,自动返回性别
  if (!isIdCard($cid)) return '';
  $sexint = (int)substr($cid,16,1);
   
  return $sexint % 2 === 0 ? '女' : '男';
}
function isIdCard($number) { // 检查是否是身份证号
  // 转化为大写,如出现x
  $number = strtoupper($number);
  //加权因子 
  $wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
  //校验码串 
  $ai = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
  //按顺序循环处理前17位 
  $sigma = 0;
  for ($i = 0;$i < 17;$i++) { 
    //提取前17位的其中一位,并将变量类型转为实数 
    $b = (int) $number{$i}; 
 
    //提取相应的加权因子 
    $w = $wi[$i];
 
    //把从身份证号码中提取的一位数字和加权因子相乘,并累加
    $sigma += $b * $w; 
  }
  //计算序号 
  $snumber = $sigma % 11; 
 
  //按照序号从校验码串中提取相应的字符。 
  $check_number = $ai[$snumber];
 
  if ($number{17} == $check_number) {
    return true;
  } else {
    return false;
  }
}
?>

第二个实例:用php从身份证中提取生日,包括15位和18位身份证:

function getIDCardInfo($IDCard,$format=1){ 
 $result['error']=0;//0:未知错误,1:身份证格式错误,2:无错误 
 $result['flag']='';//0标示成年,1标示未成年 
 $result['tdate']='';//生日,格式如:2012-11-15 
 if(!preg_match("/^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/",$IDCard)){ 
 $result['error']=1; 
 return $result; 
 }else{ 
 if(strlen($IDCard)==18)
 { 
  $tyear=intval(substr($IDCard,6,4)); 
  $tmonth=intval(substr($IDCard,10,2)); 
  $tday=intval(substr($IDCard,12,2)); 
 }
 elseif(strlen($IDCard)==15)
 { 
  $tyear=intval("19".substr($IDCard,6,2)); 
  $tmonth=intval(substr($IDCard,8,2)); 
  $tday=intval(substr($IDCard,10,2)); 
 }
  
 if($tyear>date("Y")||$tyear<(date("Y")-100))
 { 
  $flag=0; 
  }
  elseif($tmonth<0||$tmonth>12)
  { 
  $flag=0; 
  }
  elseif($tday<0||$tday>31)
  { 
  $flag=0; 
  }else
  { 
  if($format)
  {
   $tdate=$tyear."-".$tmonth."-".$tday; 
  }
  else
  {
   $tdate=$tmonth."-".$tday; 
  }
   
  if((time()-mktime(0,0,0,$tmonth,$tday,$tyear))>18*365*24*60*60)
  { 
   $flag=0; 
  }
  else
  { 
   $flag=1; 
  } 
  } 
 } 
 $result['error']=2;//0:未知错误,1:身份证格式错误,2:无错误 
 $result['isAdult']=$flag;//0标示成年,1标示未成年 
 $result['birthday']=$tdate;//生日日期 
 return $result; 
}

最后一个实例:php 提取身份证号码中的生日日期以及确定是否成年的一个函数。可以同时确定15位和18位的身份证,经本人亲测,非常好用,分享函数代码如下:

<?php
//用php从身份证中提取生日,包括位和位身份证
function getIDCardInfo($IDCard){
 $result['error']=;//:未知错误,:身份证格式错误,:无错误
 $result['flag']='';//标示成年,标示未成年
 $result['tdate']='';//生日,格式如:--
 if(!eregi("^[-]([-a-zA-Z]{}|[-a-zA-Z]{})$",$IDCard)){
  $result['error']=;
  return $result;
 }else{
  if(strlen($IDCard)==){
   $tyear=intval(substr($IDCard,,));
   $tmonth=intval(substr($IDCard,,));
   $tday=intval(substr($IDCard,,));
   if($tyear>date("Y")||$tyear<(date("Y")-)){
    $flag=;
   }elseif($tmonth<||$tmonth>){
    $flag=;
   }elseif($tday<||$tday>){
    $flag=;
   }else{
    $tdate=$tyear."-".$tmonth."-".$tday." ::";
    if((time()-mktime(,,,$tmonth,$tday,$tyear))>****){
     $flag=;
    }else{
     $flag=;
    }
   }
  }elseif(strlen($IDCard)==){
   $tyear=intval("".substr($IDCard,,));
   $tmonth=intval(substr($IDCard,,));
   $tday=intval(substr($IDCard,,));
   if($tyear>date("Y")||$tyear<(date("Y")-)){
    $flag=;
   }elseif($tmonth<||$tmonth>){
    $flag=;
   }elseif($tday<||$tday>){
    $flag=;
   }else{
    $tdate=$tyear."-".$tmonth."-".$tday." ::";
    if((time()-mktime(,,,$tmonth,$tday,$tyear))>****){
     $flag=;
    }else{
     $flag=;
    }
   }
  }
 }
 $result['error']=;//:未知错误,:身份证格式错误,:无错误
 $result['isAdult']=$flag;//标示成年,标示未成年
 $result['birthday']=$tdate;//生日日期
 return $result;
}

用法如下:

getIDCardInfo('身份证号码');

以上代码就是小编跟大家分享的php提取身份证号码中的生日日期以及验证是否为成年人的函数,希望对大家有用。

PHP 相关文章推荐
4.与数据库的连接
Oct 09 PHP
PHP session有效期session.gc_maxlifetime
Apr 20 PHP
php站内搜索并高亮显示关键字的实现代码
Dec 29 PHP
探讨Hessian在PHP中的使用分析
Jun 13 PHP
php使用百度天气接口示例
Apr 22 PHP
PHP编程中的常见漏洞和代码实例
Aug 06 PHP
PHP中使用匿名函数操作数据库的例子
Nov 17 PHP
PHP扩展开发入门教程
Feb 26 PHP
php实现购物车功能(上)
Jul 23 PHP
基于laravel制作APP接口(API)
Mar 15 PHP
php中类和对象:静态属性、静态方法
Apr 09 PHP
Laravel等框架模型关联的可用性浅析
Dec 15 PHP
PHP数据库操作Helper类完整实例
May 11 #PHP
PHP查询附近的人及其距离的实现方法
May 11 #PHP
Smarty分页实现方法完整实例
May 11 #PHP
php简单获取复选框值的方法
May 11 #PHP
php上传图片类及用法示例
May 11 #PHP
php通过smtp邮件验证登陆的方法
May 11 #PHP
Smarty变量用法详解
May 11 #PHP
You might like
利用php获取服务器时间的实现代码
2013/06/07 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
2013/11/14 PHP
PHP使用mkdir创建多级目录的方法
2015/12/22 PHP
javascript实现的动态文字变换
2007/07/28 Javascript
根据地区不同显示时间的javascript代码
2007/08/13 Javascript
JavaScript定时器详解及实例
2013/08/01 Javascript
SeaJS入门教程系列之SeaJS介绍(一)
2014/03/03 Javascript
javascript设计模式之工厂模式示例讲解
2014/03/04 Javascript
javascript学习笔记之10个原生技巧
2014/05/21 Javascript
html5+javascript实现简单上传的注意细节
2016/04/18 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
2016/09/17 Javascript
微信小程序 购物车简单实例
2016/10/24 Javascript
微信小程序 swiper组件轮播图详解及实例
2016/11/16 Javascript
JavaScript正则获取地址栏中参数的方法
2017/03/02 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
vue组件详解之使用slot分发内容
2018/04/09 Javascript
vue的过滤器filter实例详解
2018/09/17 Javascript
vue store之状态管理模式的详细介绍
2019/06/13 Javascript
vue h5移动端禁止缩放代码
2019/10/28 Javascript
Vue 实现CLI 3.0 + momentjs + lodash打包时优化
2019/11/13 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
2020/12/10 Javascript
python解析中国天气网的天气数据
2014/03/21 Python
sqlalchemy对象转dict的示例
2014/04/22 Python
Python 3.x 新特性及10大变化
2015/06/12 Python
python画图——实现在图上标注上具体数值的方法
2019/07/08 Python
Django--权限Permissions的例子
2019/08/28 Python
用Python画一个LinkinPark的logo代码实例
2019/09/10 Python
python实现简单学生信息管理系统
2020/04/09 Python
HTML利用九宫格原理进行网页布局
2020/03/13 HTML / CSS
个人担保书格式范文
2014/05/12 职场文书
高一新生军训方案
2014/05/12 职场文书
计算机专业自荐信范文
2014/05/28 职场文书
服装仓管员岗位职责
2014/06/17 职场文书
公务员四风问题对照检查材料整改措施
2014/09/26 职场文书
销售代理协议书
2014/09/30 职场文书