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 和 MySQL 基础教程(四)
Oct 09 PHP
PHP MVC模式在网站架构中的实现分析
Mar 04 PHP
PHP mcrypt可逆加密算法分析
Jul 19 PHP
thinkphp常见路径用法分析
Dec 02 PHP
PHP设置进度条的方法
Jul 08 PHP
提高php编程效率技巧
Aug 13 PHP
PHP处理CSV表格文件的常用操作方法总结
Jul 01 PHP
php使用高斯算法实现图片的模糊处理功能示例
Nov 11 PHP
php生成二维码图片方法汇总
Dec 17 PHP
PHP回调函数与匿名函数实例详解
Aug 16 PHP
PHP数组常用函数实例小结
Aug 20 PHP
PHP 对象接口简单实现方法示例
Apr 13 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中iconv函数使用方法
2008/05/24 PHP
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
跟我学Laravel之请求(Request)的生命周期
2014/10/15 PHP
php使用指定字符列表生成随机字符串的方法
2015/04/18 PHP
浅谈PHP中foreach/in_array的使用
2015/11/02 PHP
php实现产品加入购物车功能(1)
2020/07/23 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
2021/03/09 PHP
js比较和逻辑运算符的介绍
2013/03/10 Javascript
javascript中不易分清的slice,splice和split三个函数
2016/03/29 Javascript
jQuery中的Deferred和promise 的区别
2016/04/03 Javascript
浅谈javascript中关于日期和时间的基础知识
2016/07/13 Javascript
Javascript数组循环遍历之forEach详解
2016/11/07 Javascript
JS字符串false转boolean的方法(推荐)
2017/03/08 Javascript
js调用刷新界面的几种方式
2017/05/03 Javascript
全面解析jQuery中的$(window)与$(document)的用法区别
2017/08/15 jQuery
jquery实现回车键触发事件(实例讲解)
2017/11/21 jQuery
vue中keep-alive的用法及问题描述
2018/05/15 Javascript
实例详解Node.js 函数
2018/06/10 Javascript
vue.js实现插入数值与表达式的方法分析
2018/07/06 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
如何修改Vue打包后文件的接口地址配置的方法
2020/04/22 Javascript
[02:25]DOTA2英雄基础教程 熊战士
2014/01/03 DOTA
Python unittest 简单实现参数化的方法
2018/11/30 Python
更新pip3与pyttsx3文字语音转换的实现方法
2019/08/08 Python
pycharm 代码自动补全的实现方法(图文)
2020/09/18 Python
Ralph Lauren英国官方网站:Ralph Lauren UK
2018/04/03 全球购物
Glamest意大利:女性在线奢侈品零售店
2019/04/28 全球购物
傲盾软件面试题
2015/08/17 面试题
校长岗位职责
2013/11/26 职场文书
排查整治工作方案
2014/06/09 职场文书
2014新生大学四年计划书
2014/09/21 职场文书
县政府领导班子四风问题对照检查材料思想汇报
2014/09/26 职场文书
贷款工资证明范本
2015/06/12 职场文书
于丹讲座视频观后感
2015/06/15 职场文书
Spring Cloud 中@FeignClient注解中的contextId属性详解
2021/09/25 Java/Android
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript