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错误提示failed to open stream: HTTP request failed!的完美解决方法
Jun 06 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
Jun 28 PHP
PHP+MYSQL会员系统的开发实例教程
Aug 23 PHP
js代码实现微博导航栏
Jul 30 PHP
PHP经典面试题之设计模式(经常遇到)
Oct 15 PHP
php 无限分类 树形数据格式化代码
Oct 11 PHP
php中文乱码问题的终极解决方案汇总
Aug 01 PHP
PHP读取并输出XML文件数据的简单实现方法
Dec 22 PHP
PHP的mysqli_thread_id()函数讲解
Jan 24 PHP
php解压缩zip和rar压缩包文件的方法
Jul 10 PHP
基于Laravel 5.2 regex验证的正确写法
Sep 29 PHP
laravel 解决crontab不执行的问题
Oct 22 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
测试PHP连接MYSQL成功与否的代码
2013/08/16 PHP
php防止用户重复提交表单
2015/11/02 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
thinkPHP实现多字段模糊匹配查询的方法
2016/12/01 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
2018/08/21 PHP
深入理解 PHP7 中全新的 zval 容器和引用计数机制
2018/10/15 PHP
Javascript代码混淆综合解决方案-Javascript在线混淆器
2006/12/18 Javascript
input 高级限制级用法
2009/03/26 Javascript
jquery1.4后 jqDrag 拖动 不可用
2010/02/06 Javascript
AeroWindow 基于JQuery的弹出窗口插件
2011/06/27 Javascript
JS的replace方法详细介绍
2012/11/09 Javascript
封装html的select标签的js操作实例
2013/07/02 Javascript
js动态修改input输入框的type属性(实现方法解析)
2013/11/13 Javascript
深入理解javascript中return的作用
2013/12/30 Javascript
JavaScript中按位“异或”运算符使用介绍
2014/03/14 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
2015/11/04 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
2016/08/03 Javascript
JS 实现可停顿的垂直滚动实例代码
2016/11/23 Javascript
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
create-react-app 修改为多入口编译的方法
2018/08/01 Javascript
layui实现数据分页功能(ajax异步)
2019/07/27 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
2020/01/16 Javascript
[16:04]DOTA2海涛带你玩炸弹 9月5日更新内容详解
2014/09/05 DOTA
[01:30:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第二场 2月2日
2021/03/11 DOTA
Python写的服务监控程序实例
2015/01/31 Python
对python3 Serial 串口助手的接收读取数据方法详解
2019/06/12 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
2019/10/11 Python
python中for in的用法详解
2020/04/17 Python
Michael Kors澳大利亚官网:世界知名的奢侈饰品和成衣设计师
2020/02/13 全球购物
软件设计的目标是什么
2016/12/04 面试题
单位委托书范本
2014/04/04 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
世界水日宣传活动总结
2015/02/09 职场文书
创业计划书之牛肉汤快餐店
2019/10/08 职场文书