PHP用身份证号获取星座和生肖的方法


Posted in PHP onNovember 07, 2013
<?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 相关文章推荐
一棵php的类树(支持无限分类)
Oct 09 PHP
PHP6 先修班 JSON实例代码
Aug 23 PHP
php 获取完整url地址
Dec 20 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
Apr 12 PHP
Admin generator, filters and I18n
Oct 06 PHP
基于PHP CURL用法的深入分析
Jun 09 PHP
PHP延迟静态绑定示例分享
Jun 22 PHP
配置php.ini实现PHP文件上传功能
Nov 27 PHP
php中注册器模式类用法实例分析
Nov 03 PHP
浅谈PHP中其他类型转化为Bool类型
Mar 28 PHP
PHP版单点登陆实现方案的实例
Nov 17 PHP
PHP读取word文档的方法分析【基于COM组件】
Aug 01 PHP
php旋转图片90度的方法
Nov 07 #PHP
提高PHP编程效率的方法
Nov 07 #PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
Nov 07 #PHP
php获取汉字首字母的函数
Nov 07 #PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
Nov 07 #PHP
php cookie使用方法学习笔记分享
Nov 07 #PHP
PHP 5.5 创建和验证哈希最简单的方法详解
Nov 07 #PHP
You might like
牡丹941资料
2021/03/01 无线电
转换中文日期的PHP程序
2006/10/09 PHP
15种PHP Encoder的比较
2007/04/17 PHP
symfony2.4的twig中date用法分析
2016/03/18 PHP
浅谈PHP中的面向对象OOP中的魔术方法
2017/06/12 PHP
List the Stored Procedures in a SQL Server database
2007/06/20 Javascript
JS实现日期加减的方法
2013/11/29 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
2014/12/08 Javascript
JavaScript实现简单获取当前网页网址的方法
2015/11/09 Javascript
原生JS实现拖拽图片效果
2020/08/27 Javascript
AngularJS下对数组的对比分析
2016/08/24 Javascript
实现点击下箭头变上箭头来回切换的两种方法【推荐】
2016/12/14 Javascript
原生JS上传大文件显示进度条 php上传文件代码
2020/03/27 Javascript
dropload.js插件下拉刷新和上拉加载使用详解
2017/10/20 Javascript
详解Angular2学习笔记之Html属性绑定
2018/01/03 Javascript
vue click.stop阻止点击事件继续传播的方法
2018/09/04 Javascript
浅谈vue项目4rs vue-router上线后history模式遇到的坑
2018/09/27 Javascript
node+express框架中连接使用mysql(经验总结)
2018/11/10 Javascript
layui文件上传控件带更改后数据传值的方法
2019/09/23 Javascript
Python AES加密实例解析
2018/01/18 Python
Python中应该使用%还是format来格式化字符串
2018/09/25 Python
pandas.dataframe按行索引表达式选取方法
2018/10/30 Python
对python判断ip是否可达的实例详解
2019/01/31 Python
Django如何防止定时任务并发浅析
2019/05/14 Python
Django后端发送小程序微信模板消息示例(服务通知)
2019/12/17 Python
python多线程实现代码(模拟银行服务操作流程)
2020/01/13 Python
python numpy数组中的复制知识解析
2020/02/03 Python
Python 实现敏感目录扫描的示例代码
2020/05/21 Python
Roxy美国官网:澳大利亚冲浪、滑雪健身品牌
2016/07/30 全球购物
德国综合购物网站:OTTO
2018/11/13 全球购物
教育科学研究生自荐信
2013/10/09 职场文书
小学阳光体育活动总结
2014/07/05 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书
Python带你从浅入深探究Tuple(基础篇)
2021/05/15 Python
Python可变集合和不可变集合的构造方法大全
2021/12/06 Python
vue使用element-ui按需引入
2022/05/20 Vue.js