首頁 後端開發 php教程 使用php从身份证号中获取一系列线索(星座、生肖、生日等)_PHP

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

May 27, 2016 am 10:33 AM
php 星座 生日 身分證號

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

<&#63;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 &#63; '女' : '男';
}
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;
  }
}
&#63;>
登入後複製

第二个实例:用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位的身份证,经本人亲测,非常好用,分享函数代码如下:

<&#63;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提取身份证号码中的生日日期以及验证是否为成年人的函数,希望对大家有用。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南

CakePHP 專案配置 CakePHP 專案配置 Sep 10, 2024 pm 05:25 PM

CakePHP 專案配置

CakePHP 日期和時間 CakePHP 日期和時間 Sep 10, 2024 pm 05:27 PM

CakePHP 日期和時間

CakePHP 檔案上傳 CakePHP 檔案上傳 Sep 10, 2024 pm 05:27 PM

CakePHP 檔案上傳

CakePHP 路由 CakePHP 路由 Sep 10, 2024 pm 05:25 PM

CakePHP 路由

討論 CakePHP 討論 CakePHP Sep 10, 2024 pm 05:28 PM

討論 CakePHP

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發

CakePHP 快速指南 CakePHP 快速指南 Sep 10, 2024 pm 05:27 PM

CakePHP 快速指南

See all articles