php根据生日计算年龄/生肖/星座实例

 更新时间:2016年11月25日 17:28  点击:1774
本文章来介绍根据用户出生年月来计算年龄/生肖/星座的各种程序实例代码,各位朋友不防进入参考


//计算年龄

 代码如下 复制代码
function birthday($mydate){
    $birth=$mydate;
    list($by,$bm,$bd)=explode('-',$birth);
    $cm=date('n');
    $cd=date('j');
    $age=date('Y')-$by-1;
    if ($cm>$bm || $cm==$bm && $cd>$bd) $age++;
    return $age;
//echo "生日:$birthn年龄:$agen";
}

根据年份计算生肖

 代码如下 复制代码

<?php
/**
 *  计算.生肖
 * 
 * @param int $year 年份
 * @return str
 */
function get_animal($year){
    $animals = array(
            '鼠', '牛', '虎', '兔', '龙', '蛇', 
            '马', '羊', '猴', '鸡', '狗', '猪'
    );
    $key = ($year - 1900) % 12;
    return $animals[$key];
}

echo get_animal(1990);    // 马
echo get_animal(2010);    // 虎

根据生日计算星座

 代码如下 复制代码


<?php
/**
 *  计算.星座
 *
 * @param int $month 月份
 * @param int $day 日期
 * @return str
 */
function get_constellation($month, $day){
    $signs = array(
            array('20'=>'宝瓶座'), array('19'=>'双鱼座'),
            array('21'=>'白羊座'), array('20'=>'金牛座'),
            array('21'=>'双子座'), array('22'=>'巨蟹座'),
            array('23'=>'狮子座'), array('23'=>'处女座'),
            array('23'=>'天秤座'), array('24'=>'天蝎座'),
            array('22'=>'射手座'), array('22'=>'摩羯座')
    );
    $key = (int)$month - 1;
    list($startSign, $signName) = each($signs[$key]);
    if( $day < $startSign ){
        $key = $month - 2 < 0 ? $month = 11 : $month -= 2;
        list($startSign, $signName) = each($signs[$key]);
    }
    return $signName;
}

echo get_constellation(12, 11);    // 射手座
echo get_constellation(6, 6);      // 双子座

本文章来给各位同学详细介绍关于php 计算两个日期这间的间隔天数实例,各位同学可参考,我们一般是把日期用strtotime转换,然后再进行算,这样可以精确到时分秒去哦。


例1

直接把日期转换

 代码如下 复制代码

function daysbetweendates($date1, $date2){
    $date1 = strtotime($date1);
    $date2 = strtotime($date2);
    $days = ceil(abs($date1 - $date2)/86400);
    return $days;
}

例2

 代码如下 复制代码

<?php
functionmaketime($date)
{
list($year,$month,$day) = explode('-',$date);
returnmktime(0,0,0,$month,$day,$year);
}
$date1 = '2007-01-08';
$date2 = '2007-03-01';
$d = (maketime($date2) - maketime($date1)) / (3600*24);
echo'相差$d 天';

?>


例3

PHP实现两个日期间隔的年、月、周、日数的计算

 

 代码如下 复制代码
<?php
    function format($a,$b){
        //检查两个日期大小,默认前小后大,如果前大后小则交换位置以保证前小后大
        if(strtotime($a)>strtotime($b)) list($a,$b)=array($b,$a);
        $start  = strtotime($a);
        $stop   = strtotime($b);
        $extend = ($stop-$start)/86400;
        $result['extends'] = $extend;
        if($extend<7){                //如果小于7天直接返回天数
            $result['daily'] = $extend;
        }elseif($extend<=31){        //小于28天则返回周数,由于闰年2月满足了
            if($stop==strtotime($a.'+1 month')){
                $result['monthly'] = 1;
            }else{
                $w = floor($extend/7);
                $d = ($stop-strtotime($a.'+'.$w.' week'))/86400;
                $result['weekly']  = $w;
                $result['daily']   = $d;
            }
        }else{
            $y=    floor($extend/365);
            if($y>=1){                //如果超过一年
                $start = strtotime($a.'+'.$y.'year');
                $a     = date('Y-m-d',$start);
                //判断是否真的已经有了一年了,如果没有的话就开减
                if($start>$stop){
                    $a = date('Y-m-d',strtotime($a.'-1 month'));
                    $m =11;
                    $y--;   
                }
                $extend = ($stop-strtotime($a))/86400;
            }
            if(isset($m)){
                $w = floor($extend/7);
                $d = $extend-$w*7;
            }else{
                $m = isset($m)?$m:round($extend/30);
                $stop>=strtotime($a.'+'.$m.'month')?$m:$m--;
                if($stop>=strtotime($a.'+'.$m.'month')){
                    $d=$w=($stop-strtotime($a.'+'.$m.'month'))/86400;
                    $w = floor($w/7);
                    $d = $d-$w*7;
                }
            }
            $result['yearly']  = $y;
            $result['monthly'] = $m;
            $result['weekly']  = $w;
            $result['daily']   = isset($d)?$d:null;
        }
        return array_filter($result);
    }
 
    print_r(format('2012-10-1','2012-12-15'));
?>
现在有很多的短网址应用,点击就跳转到缩短之前的网址了,那今天我们就来看一下,PHP如何获取短网址跳转之前的网址,其实也很简单,就是用php的get_headers 函数,

取得Response Headers,之后慢慢分析就行了。

给出具体实现方法:

 代码如下 复制代码

$header = get_headers($url, 1);
if (strpos($header[0], ’301′) || strpos($header[0], ’302′)) {
if (is_array($header['Location'])) {
return $header['Location'][count($header['Location'])-1];
} else {
return $header['Location'];
}
} else {
return $url;
}


实例二

 代码如下 复制代码

<?php
//
echo get_redirect_url('http://www.111cN.nEt');
//输出结果为:http://code.google.com/android/
function get_redirect_url($url){
    $redirect_url = null;

    $url_parts = @parse_url($url);
    if (!$url_parts) return false;
    if (!isset($url_parts['host'])) return false; //can't process relative URLs
    if (!isset($url_parts['path'])) $url_parts['path'] = '/';

    $sock = fsockopen($url_parts['host'], (isset($url_parts['port']) ? (int)$url_parts['port'] : 80), $errno, $errstr, 30);
    if (!$sock) return false;

    $request = "HEAD " . $url_parts['path'] . (isset($url_parts['query']) ? '?'.$url_parts['query'] : '') . " HTTP/1.1rn";
    $request .= 'Host: ' . $url_parts['host'] . "rn";
    $request .= "Connection: Closernrn";
    fwrite($sock, $request);
    $response = '';
    while(!feof($sock)) $response .= fread($sock, 8192);
    fclose($sock);

    if (preg_match('/^Location: (.+?)$/m', $response, $matches)){
        if ( substr($matches[1], 0, 1) == "/" )
            return $url_parts['scheme'] . "://" . $url_parts['host'] . trim($matches[1]);
        else
            return trim($matches[1]);

    } else {
        return false;
    }

}

IP地址转换在整型数据然后保存到数据库中,这是一种常用的做法,我们转换IP地算法是intIP = 256*256*256*w + 256*256*x + 256*y + z即可,下面来给各位同学介绍具体实例。

【转换原理】:假设IP为:w.x.y.z,则IP地址转为整型数字的计算公式为:intIP = 256*256*256*w + 256*256*x + 256*y + z

【PHP的互转】:PHP的转换方式比较简单,它内置了两个函数

int ip2long ( string $ip_address ) //ip转换成整型数值
string long2ip ( string $proper_address ) // 整型数值转换成ip【MySQL的互转】:相对于MsSQL来说MySQL的转换方式比较简单,它和PHP一样也内置了两个函数

IP 转为整型:

select INET_ATON (IP地址)整型数值转换成IP

select INET_NTOA ( IP的整型数值 )


一个实例

1.手工自己的实现方法

 代码如下 复制代码


 function ip2number($ip)
      {

          $t = explode('.', $ip);
          $x = 0;
          for ($i = 0; $i < 4; $i++)

          {
              $x = $x * 256 + $t[$i];

          }
          return $x;

      }

function number2ip($num)

      {
          $t = $num;
          $a = array();

          for ($i = 0; $i < 4; $i++)
          {
              $x = $t % 256;
              if($x < 0) $x += 256;
              array_unshift($a, $x);
              $t = intval($t / 256);
          }
          return implode('.', $a);
 }

我们要写原生太的文章内容分页程序,原理很简单,就是在编辑时我们在编辑器中插入分页符,然后在显示时我们直接使用explode分页就可以实现了,当然有更高级的就是分页保存不同的记录,然后再生成相对复杂一些。

将正文按照一定字符串进行分割,分割后在按照页码进行数组索引,将当前页码对应数组的值输出即可,好像说得够晕的,下面来个实例:

 代码如下 复制代码

<?php
$str = "asd啊<b>是</b>大叔大叔asd杀毒发[NextPage]生的啊师傅 <a href="asd">asd</a> 啊师傅asd a速度发啥地方";
//接收页码(如果不存在就为1)
$page = $_REQUEST['page'] ? $_REQUEST['page'] : 1;
//通过分割符分割内容
$arr = explode("[NextPage]",$str);
//如果分割出来的数组大小为1即未进行分页
if(count($arr)==1){
 echo $str;
}else{
 //按页码输出相应的内容
 echo $arr[$page-1];
 //分页页码
 for($i=1;$i<=count($arr);$i++){ 
  if($page == $i){//当前页
   echo "<a href='?page=".$i."' class='current'>".$i."</a> ";
  }else{
    echo "<a href='?page=".$i."' >".$i."</a> ";
  }
 }
}
?>

[!--infotagslink--]

相关文章

  • python 计算方位角实例(根据两点的坐标计算)

    今天小编就为大家分享一篇python 计算方位角实例(根据两点的坐标计算),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27
  • JS实现购物车中商品总价计算

    这篇文章主要为大家详细介绍了JS实现购物车中商品总价的计算 ,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-03-07
  • golang与php实现计算两个经纬度之间距离的方法

    这篇文章主要介绍了golang与php实现计算两个经纬度之间距离的方法,结合实例形式对比分析了Go语言与php进行经纬度计算的相关数学运算技巧,需要的朋友可以参考下...2016-07-29
  • C#实现计算一个点围绕另一个点旋转指定弧度后坐标值的方法

    这篇文章主要介绍了C#实现计算一个点围绕另一个点旋转指定弧度后坐标值的方法,涉及C#针对坐标的数学运算相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • JavaScript实现星座查询功能 附详细代码

    最近小编在做一个项目,其中涉及到一个模块关于星座查询功能,即在文本框中输入一个生日值,点击按钮可以得到对应的星座,怎么实现这个需求呢?下面小编通过示例代码给大家介绍下,需要的朋友参考下吧...2021-11-03
  • c# 计算时间间隔的简单方法(推荐)

    下面小编就为大家带来一篇c# 计算时间间隔的简单方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • C语言简单实现计算字符个数的方法

    这篇文章主要介绍了C语言简单实现计算字符个数的方法,涉及C语言针对字符串的简单遍历与判定技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-04-25
  • Unity实现汽车前后轮倒车轨迹计算

    这篇文章主要为大家详细介绍了Unity实现汽车前后轮倒车轨迹计算,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-13
  • Go语言计算指定年月天数的方法

    这篇文章主要介绍了Go语言计算指定年月天数的方法,实例分析了Go语言操作时间的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-05-05
  • Vue如何使用Dayjs计算常用日期详解

    这篇文章主要给大家介绍了关于Vue如何使用Dayjs计算常用日期的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-09
  • C#根据年月日计算星期几的函数

    这篇文章主要为大家详细介绍了C#实现根据年月日计算星期几的函数,感兴趣的小伙伴们可以参考一下...2020-06-25
  • 在SQLSERVER2005中实现素数计算

    我将提出一个挑战,谁能用SQLSEERVER提出计算素数最好的方法, 我用了一个新的特点CTE和某些TSQL实现,但均不理想,前者(CTE)有限制,而后者(TSQL)产生一百万个素数用了7分种 你可...2016-11-25
  • C#计算汽车行驶方向的方法分析

    这篇文章主要介绍了C#计算汽车行驶方向的方法,结合实例形式分析了C#数值计算的原理与相关技巧,需要的朋友可以参考下...2020-06-25
  • PHP计算上一个月的今天 今天是星期几

    本文章来给大家介绍关于PHP计算上一个月的今天 今天是星期几的程序演示实例过程,各位有需要了解的朋友可参考。 上一个月的今天 strtotime 有个小问题 代...2016-11-25
  • Vue3 响应式侦听与计算的实现

    这篇文章主要介绍了Vue3 响应式侦听与计算的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-11
  • C语言科学计算入门之矩阵乘法的相关计算

    这篇文章主要介绍了C语言科学计算入门之矩阵乘法的相关计算,文章中还介绍了矩阵相关的斯特拉森算法的实现,需要的朋友可以参考下...2020-04-25
  • php计算时间间隔实现程序代码

    在文章里面我说了很多关于php计算时间间隔实现程序代码的实现方法原理以及分析如何来做这个功能,有需用的同学可以仔细看看哦。 下面实例是告诉我们在论坛有看到关...2016-11-25
  • 怎么计算一个程序的执行时间

    function getmicrotime(){ list($usec, $sec) = explode(" ",microtime()); return ((float)$usec (float)$sec); } $time_start = getmicrotime();//开始计时,...2016-11-25
  • php时间计算相关问题小结

    这篇文章主要介绍了php时间计算相关问题,结合实例形式总结分析了php关于时间与日期的常见操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2016-05-13
  • C#基于面向过程计算加权平均分的方法

    这篇文章主要介绍了C#基于面向过程计算加权平均分的方法,涉及C#数学运算的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25