// 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 <= 21) || ($month == 2 && $day <= 19)) {
$strValue = "水瓶座";
}else if(($month == 2 && $day > 20) || ($month == 3 && $day <= 20)) {
$strValue = "双鱼座";
}else if (($month == 3 && $day > 20) || ($month == 4 && $day <= 20)) {
$strValue = "白羊座";
}else if (($month == 4 && $day > 20) || ($month == 5 && $day <= 21)) {
$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 <= 23)) {
$strValue = "狮子座";
}else if (($month == 8 && $day > 23) || ($month == 9 && $day <= 23)) {
$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 <= 20)) {
$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 ? '女' : '男';
}
//检查是否是身份证号
public function isIdCard($id) {
$id = strtoupper($id);
$regx = "/(^\d{15}$)|(^\d{17}([0-9]|X)$)/";
$arr_split = array();
if (!preg_match($regx, $id)) {
return false;
}
if (15 == strlen($id)) //检查15位
{
$regx = "/^(\d{6})+(\d{2})+(\d{2})+(\d{2})+(\d{3})$/";
@preg_match($regx, $id, $arr_split);
//检查生日日期是否正确
$dtm_birth = "19" . $arr_split[2] . '/' . $arr_split[3] . '/' . $arr_split[4];
if (!strtotime($dtm_birth)) {
return false;
} else {
return true;
}
} else //检查18位
{
$regx = "/^(\d{6})+(\d{4})+(\d{2})+(\d{2})+(\d{3})([0-9]|X)$/";
@preg_match($regx, $id, $arr_split);
$dtm_birth = $arr_split[2] . '/' . $arr_split[3] . '/' . $arr_split[4];
if (!strtotime($dtm_birth)) //检查生日日期是否正确
{
return false;
} else {
//检验18位身份证的校验码是否正确。
//校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
$arr_int = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
$arr_ch = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
$sign = 0;
for ($i = 0; $i < 17; $i++) {
$b = (int) $id[$i];
$w = $arr_int[$i];
$sign += $b * $w;
}
$n = $sign % 11;
$val_num = $arr_ch[$n];
if ($val_num != substr($id, 17, 1)) {
return false;
}
else {
return true;
}
}
}
}
# 1.从身份证中获取出生日期
$stridbirthday = substr($idno, 6, 8);//idno是身份证号 截取日期并转为时间戳
$birthday = substr(stridbirthday,0,4).'-'. substr(stridbirthday,4,2).'-'. substr(stridbirthday,6,2);
//获取性别
public function getAgeFromIdNo($idno = '')
{
$btime = strtotime(substr($idno, 6, 8));//idno是身份证号 截取日期并转为时间戳
$byear = date('Y', $btime);
$bmonth = date('m', $btime);
$bday = date('d', $btime);
$curYear = date('Y');
$curMoth = date('m');
$curDay = date('d');
$age = $curYear - $byear;
if ($curMoth < $bmonth || ($curMoth == $bmonth && $curDay < $bday)) {
$age--;
}
return $age;
}
public function get_age($idcard)
{
if(empty($idcard)) return null;
# 获得出生年月日的时间戳
$date = strtotime(substr($idcard,6,8));
# 获得今日的时间戳
$today = strtotime('today');
# 得到两个日期相差的大体年数
$diff = floor(($today-$date)/86400/365);
# strtotime加上这个年数后得到那日的时间戳后与今日的时间戳相比
$age = strtotime(substr($idcard,6,8).' +'.$diff.'years')>$today?($diff+1):$diff;
return $age;
}
发表评论 取消回复