php计算时间差之计算文章发表距现在时间

 更新时间:2016年11月25日 15:44  点击:2171
我信会在很多网站看到一些文章发布之后会显示此文章是在几秒几前发的或几个月前发的文件,下面我来给大家介绍利用php计算时间差来计算文章发表距现在时间相隔多久了。
 代码如下 复制代码


<?php
/**
 * 时间差计算

 */
function  time2Units  ( $time )
{
    $year    =  floor ( $time  /  60  /  60  /  24  /  365 );
    $time   -=  $year  *  60  *  60  *  24  *  365 ;
    $month   =  floor ( $time  /  60  /  60  /  24  /  30 );
    $time   -=  $month  *  60  *  60  *  24  *  30 ;
    $week    =  floor ( $time  /  60  /  60  /  24  /  7 );
    $time   -=  $week  *  60  *  60  *  24  *  7 ;
    $day     =  floor ( $time  /  60  /  60  /  24 );
    $time   -=  $day  *  60  *  60  *  24 ;
    $hour    =  floor ( $time  /  60  /  60 );
    $time   -=  $hour  *  60  *  60 ;
    $minute  =  floor ( $time  /  60 );
    $time   -=  $minute  *  60 ;
    $second  =  $time ;
    $elapse  =  '' ;

    $unitArr  = array( '年'   => 'year' ,  '个月' => 'month' ,   '周' => 'week' ,  '天' => 'day' ,
                     '小时' => 'hour' ,  '分钟' => 'minute' ,  '秒' => 'second'
                     );

   foreach (  $unitArr  as  $cn  =>  $u  )
   {
       if ( $ $u  >  0  )
       {
            $elapse  = $ $u  .  $cn ;
           break;
       }
   }

   return  $elapse ;
}

$past  =  2052345678 ;  // Some timestamp in the past
$now   =  time ();      // Current timestamp
$diff =  $now  -  $past ;

echo  '发表于'  .  time2Units ( $diff ) .  '前' ;
?>

在php中要实现跳转有很多方法,最常规的跳转方法就是使用header函数来操作了,当然也可以在php中输入js跳转形式,下面我来给大家介绍一下。

PHP 跳转

 代码如下 复制代码

<?php
header("location: http://www.111cn.net");
?>

header函数使用

PHP页面跳转一、header()函数

header()函数是PHP中进行页面跳转的一种十分简单的方法。header()函数的主要功能是将HTTP协议标头(header)输出到浏览器。
header()函数的定义如下:

void header (string string [,bool replace [,int http_response_code]])可选参数replace指明是替换前一条类似标头还是添加一条相同类型的标头,默认为替换。
第二个可选参数http_response_code强制将HTTP相应代码设为指定值。 header函数中Location类型的标头是一种特殊的header调用,常用来实现页面跳转。注意:1.location和“:”号间不能有空格,否则不会跳转。
2.在用header前不能有任何的输出。
3.header后的PHP代码还会被执行。例如,将浏览器重定向到冠威博客

 代码如下 复制代码

< ?php
//重定向浏览器
header("Location: http://www.111cn.net");
//确保重定向后,后续代码不会被执行
exit;
?>

PHP页面跳转二、Meta标签

Meta标签是HTML中负责提供文档元信息的标签,在PHP程序中使用该标签,也可以实现页面跳转。 若定义http-equiv为refresh,则打开该页面时将根据content规定的值在一定时间内跳转到相应页面。
若设置content=”秒数;url=网址”,则定义了经过多长时间后页面跳转到指定的网址。例如,使用meta标签实现疫苗后页面自动跳转到冠威博客。

 代码如下 复制代码

< meta http-equiv="refresh" content="1;url=http://www.111cn.net">

例如,以下程序meta.php实现在该页面中停留一秒后页面自动跳转到www.111cn.net。

 代码如下 复制代码

<?php
$url = "http://www.111cn.net"; ?>
< html>
< head>
< meta http-equiv="refresh" content="1; url=< ?php echo $url; ?>">
< /head>
< body>
页面只停留一秒……
< /body>
< /html>

PHP页面跳转三、JavaScript(常用、推荐)

例如,此代码可以放在程序中的任何合法位置。

 代码如下 复制代码

<?php
$url = "http://www.111cn.net";
echo "<script language='javascript' type='text/javascript'>";
echo "window.location.href='$url'";
echo "</script>";
?>

附一些js跳转方法

JavaScript 跳转

方法一:

 代码如下 复制代码
<script language="javascript">
window.location= "http://www.111cn.net";
</script>

方法二:

 代码如下 复制代码

<script language="javascript">
document.location = "http://www.111cn.net";
</script>

ASP 跳转

 代码如下 复制代码

<%
response.redirect "http://www.111cn.net"
%>

在php.ini中如果我们不对 post_max_size,upload_max_filesize 这些参数进行修改,默认最多只能上传2MB的文件了,如果几十MB或更大的就无法上传了,下面我来介绍修改PHP配置文件上传大文件几种方法,希望对大家有点帮助呀

windows+apache+php环境

在apache最常见的PHP上传文件大小限制是通过 php.ini 配置文件定义的,通过修改以下三个字段的值,重新启用服务器端程序(如 apache),便可成功修改PHP上传文件的大小限制:

upload_max_filesize = 8M
post_max_size = 10M
memory_limit = 20M

具体配置如下

在php.ini里查找

 代码如下 复制代码

max_execution_time

默认是30秒.改为

 代码如下 复制代码

max_execution_time = 0

0表示没有限制

以上修改的是php上传文件中脚本执行超时时间

2. 修改 post_max_size 设定 POST 数据所允许的最大大小。此设定也影响到php上传文件。
php默认的post_max_size 为2M.如果 POST 数据尺寸大于 post_max_size $_POST 和 $_FILES superglobals 便会为空.

查找 post_max_size .改为

 代码如下 复制代码

post_max_size = 150M

3. 很多人都会改了第二步.但php上传文件时最大仍然为 8M.
为什么呢.我们还要改一个参数upload_max_filesize 表示所上传的文件的最大大小。
查找upload_max_filesize,默认为8M改为

 代码如下 复制代码

upload_max_filesize = 100M

另外要说明的是在php文件上传中,post_max_size 大于 upload_max_filesize 为佳.

nginx+php上传文件大小配置修改


以前用php上传文件,先是修改php.ini的设置,前些日子服务器换了环境(采用nginx+php),今天突然发现稍大一点的文件不能上传了,纠结 半天,终于找到是nginx的client_max_body_size配置选项值造成的413错误。现在分享一下处理方法。
问题说明:
php.ini配置文件中upload_max_filesize设置为50M
post_max_size设置的值为100M
但是上传超过10兆的文件就会返回uploaderror 413错误。
服务器环境:
centos5.7 32位
nginx1.0.8
php5.2.17

解决方法:

1、如果你上传文件限制为50兆,则先修改php.iniupload_max_filesize  50M

 代码如下 复制代码

post_max_size  100M

2、然后修改nginx配置文件中:
这个配置选项值默认是1m,可以增加到8m以增加提高文件大小限制,我这里直接修改为100了,具体情况可根据自己的需求设置。(参 考:client_max_body_size大小要和php.ini中的upload_max_filesize、post_max_size中的最大 值一致或者稍大,这样就不会因为提交数据大小不一致出现的错误。)

 代码如下 复制代码
client_max_body_size 100m;
在php中字符编码转换我们一般会用到iconv与mb_convert_encoding进行操作,但是mb_convert_encoding在转换性能上比iconv要差很多哦。

string iconv ( string in_charset, string out_charset, string str )
注意:第二个参数,除了可以指定要转化到的编码以外,还可以增加两个后缀://TRANSLIT 和 //IGNORE,其中 //TRANSLIT 会自动将不能直接转化的字符变成一个或多个近似的字符,//IGNORE 会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。
Returns the converted string or FALSE on failure.

string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )
需要先enable mbstring 扩展库,在 php.ini里将; extension=php_mbstring.dll 前面的 ; 去掉
mb_convert_encoding 可以指定多种输入编码,它会根据内容自动识别,但是执行效率比iconv差太多;

使用:

发现iconv在转换字符”—”到gb2312时会出错,如果没有ignore参数,所有该字符后面的字符串都无法被保存。不管怎么样,这个”—”都无法转换成功,无法输出。 另外mb_convert_encoding没有这个bug.

一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding 函数.

 

 代码如下 复制代码

/**
*自动判断把gbk或gb2312编码的字符串转为utf8
*能自动判断输入字符串的编码类,如果本身是utf-8就不用转换,否则就转换为utf-8的字符串
*支持的字符编码类型是:utf-8,gbk,gb2312
*@$str:string 字符串
*/
function yang_gbk2utf8($str){
    $charset = mb_detect_encoding()($str,array('UTF-8','GBK','GB2312'));
    $charset = strtolower($charset);
    if('cp936' == $charset){
        $charset='GBK';
    }
    if("utf-8" != $charset){
        $str = iconv($charset,"UTF-8//IGNORE",$str);
    }
    return $str;
}

下面我接着看在转换字符编码的一些问题

用mb_detect_encoding($str);函数,使用该函数必须打开php的extension=php_mbstring.dll扩展

 代码如下 复制代码
<?php
$str="测试ing";
$cha=mb_detect_encoding($str);
echo $cha;
?>

我在gb2312页面上输的,不过输出的结果是 UTF-8 很奇怪,还没有找到原因。

我想统一转换为UTF-8编码,用下面方法

 代码如下 复制代码
<?php
$str="测试ing";
$cha=mb_detect_encoding($str);
$s = iconv($cha,"UTF-8",$str);
var_dump($s);
?>

结果返回:
string(0) “”
真是奇怪,为什么会这样。

 代码如下 复制代码
<?php
$str="测试ing";
$cha=mb_detect_encoding($str);
$s = iconv("GB2312","UTF-8",$str);
var_dump($s);
?>

 
返回结果正确。发现该函数mb_detect_encoding($str);判断还是不准确。不知是什么原因。
函数string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )
 
可以转换为指定编码的字符串,我写了例子

 代码如下 复制代码
<pre lang="php" line="1">
<?php
$a="我很好";
echo mb_convert_encoding ($a,'UTF-8');
?>

可结果是:
??潞?潞?
现在的问题就是我如果把不同的字符串编码形式统一转换为utf-8,如果事先知道改变吗可以用iconv,但如果不知道该编码该怎么办呢?

问题3:iconv问题,如果转换的字符串,第一个字节的编码大于一定的数会返回空.

如:

 代码如下 复制代码
<?php
$str=chr(254)."测试ing".chr(254);
$s = iconv("GB2312","UTF-8",$str);
var_dump($s);
?>

返回
string(0) “”

mb_convert_encoding的用法见官方:

http://cn.php.net/manual/en/function.mb-convert-encoding.php

PHP中的另外一个函数iconv也是用来转换字符串编码的,与上函数功能相似。

下面还有一些详细的例子:
iconv — Convert string to requested character encoding
(PHP 4 >= 4.0.5, PHP 5)
mb_convert_encoding — Convert character encoding
(PHP 4 >= 4.0.6, PHP 5)

用法:
string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )
需要先enable mbstring 扩展库,在 php.ini里将; extension=php_mbstring.dll 前面的 ; 去掉
mb_convert_encoding 可以指定多种输入编码,它会根据内容自动识别,但是执行效率比iconv差太多;

string iconv ( string in_charset, string out_charset, string str )
注意:第二个参数,除了可以指定要转化到的编码以外,还可以增加两个后缀://TRANSLIT 和 //IGNORE,其中 //TRANSLIT 会自动将不能直接转化的字符变成一个或多个近似的字符,//IGNORE 会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。
Returns the converted string or FALSE on failure.

使用:
发现iconv在转换字符”—”到gb2312时会出错,如果没有ignore参数,所有该字符后面的字符串都无法被保存。不管怎么样,这个”—”都无法转换成功,无法输出。 另外mb_convert_encoding没有这个bug.
一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding 函数.

from_encoding is specified by character code name before conversion. it can be array or string – comma separated enumerated list. If it is not specified, the internal encoding will be used.
/* Auto detect encoding from JIS, eucjp-win, sjis-win, then convert str to UCS-2LE */
$str = mb_convert_encoding($str, “UCS-2LE”, “JIS, eucjp-win, sjis-win”);
/* “auto” is expanded to “ASCII,JIS,UTF-8,EUC-JP,SJIS” */
$str = mb_convert_encoding($str, “EUC-JP”, “auto”);

例子:

 代码如下 复制代码

<?php 
 $content = iconv("GBK", "UTF-8", $content); 
 $content = mb_convert_encoding($content, "UTF-8", "GBK"); 
?>

例子

这个可以根据输入输出的字符编码进行转换

 代码如下 复制代码

<?php
function phpcharset($data, $to) {
 if(is_array($data)) {
  foreach($data as $key => $val) {
   $data[$key] = phpcharset($val, $to);
  }
 } else {
  $encode_array = array('ASCII', 'UTF-8', 'GBK', 'GB2312', 'BIG5');
  $encoded = mb_detect_encoding($data, $encode_array);
  $to = strtoupper($to);
  if($encoded != $to) {
   $data = mb_convert_encoding($data, $to, $encoded);
  }
 }
 return $data;
}
?>

在php中替换字符串我们都会使用到str_replace函数了,此函数还可以使用正则,下面小编来给大家介绍一下替换字符串中的一些字符或替换第一次出现的字符实例。

现在有个需求:字符串A与字符串B,字符串B中包含字符串A,利用字符串A将字符串B中的A替换成其他字符串或删除。

利用PHP函数,str_ireplace() 与 str_replace() 可以做到。

一、str_ireplace(find,replace,string,count) 函数使用一个字符串替换字符串中的另一些字符(该函数对大小写不敏感)。

例如:

 代码如下 复制代码

<?php
     header(“Content-Type: text/html; charset=utf-8"); // 防止中文乱码
    $str_1 = '郭g碗w瓢p盆p';
    $str_2 = '?潘?';
    $str_3 = 'PHP 替换字符串中的一些字符串-郭G碗w瓢p盆P';
                             
    $str = str_ireplace($str_1,$str_2,$str_3);
    echo $str;
    // 输出:PHP 替换字符串中的一些字符串-?潘
?>

 二、str_replace(find,replace,string,count) 函数使用一个字符串替换字符串中的另一些字符(该函数对大小写敏感)。


(参数与描述同 str_ireplace() 函数)

 代码如下 复制代码

<?php
    header(“Content-Type: text/html; charset=utf-8"); // 防止中文乱码
    $str_1_s = '郭g碗w瓢p盆p';
    $str_1_b = '郭G碗w瓢p盆P';
    $str_2 = '?潘?';
    $str_3 = 'PHP 替换字符串中的一些字符串-郭G碗w瓢p盆P';
             
    $str_s = str_replace($str_1_s,$str_2,$str_3).'<br /><br />';
    $str_b = str_replace($str_1_b,$str_2,$str_3);
    echo $str_s; // 无法查找到,输出原字符串
    echo $str_b; // 被正确替换
    // $str_s 输出:PHP 替换字符串中的一些字符串-郭G碗w瓢p盆P
    // $str_b 输出:PHP 替换字符串中的一些字符串-?潘
?>

上面要替换肯定全部替换了,我如果想只替换第一次出现的字符呢

很多人想到了用str_replace()函数,看看这个函数的使用是不是我们要的
str_replace( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

不小心还真以为是我们想要的呢,最后那个参数是返回替换发生的总次数,它是一个引用变量,而不是我要想要的指定它将替换几次,所以用str_replace()是不行的

preg_replace()是可以实现的,可惜用了正则,

 代码如下 复制代码

$str=preg_replace('/abc/','xyz',$str,1);
echo $str;

有没有不用正则的,嗯可以这样

 代码如下 复制代码

$replace='xyz';
if(($position=strpos($str,$replace))!==false){
     $leng=strlen($replace);
    $str=substr_replace($str,'xyz',$position,$leng);
}
echo $str;

[!--infotagslink--]

相关文章

  • 在java中获取List集合中最大的日期时间操作

    这篇文章主要介绍了在java中获取List集合中最大的日期时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
  • 教你怎么用Java获取国家法定节假日

    这篇文章主要介绍了教你怎么用Java获取国家法定节假日,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-23
  • .NET/C# 使用Stopwatch测量运行时间

    这篇文章主要介绍了.NET/C# 使用Stopwatch测量运行时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • mysql中获取一天、一周、一月时间数据的各种sql语句写法

    创建表:复制代码 代码如下:create table if not exists t( id int, addTime datetime default '0000-00-00 00:00:00′)添加两条初始数据:insert t values(1, '2012-07-12 21:00:00′);insert t values(2, '2012-07...2014-05-31
  • 常用的日期时间正则表达式

    常用的日期时间正则表达式 下面收藏了大量的日期时间正则匹配函数,包括分钟,时间与秒都能达到。 正则表达式 (?n:^(?=d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(...2016-11-25
  • 非常全面的php日期时间运算汇总

    实例讲解之前,先来介绍几个核心函数: mktime 函数 mktime() 函数返回一个日期的 Unix 时间戳。 参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。 参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。...2015-11-08
  • C#中动态显示当前系统时间的实例方法

    想在网页中动态地显示当前系统的时间,找了好多,不过都是一些停在那里不动的。。。不过皇天不负有心人,终于让我找到了...2020-06-25
  • postgresql 中的时间处理小技巧(推荐)

    这篇文章主要介绍了postgresql 中的时间处理小技巧(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-29
  • 从chrome调试工具中把拖延时间的东西找出来

    我打开android开发手册的时候:http://www.csdn123.com/html/android/reference/packages.html 发现打开速度很慢,我用按了一下F12打开调试面板,切换到网络的选项卡network...2016-05-19
  • 帝国CMS显示指定时间内更新的信息数量

    /*解决代码高亮太长不换行*/ .syntaxhighlighter{word-break:break-all;} uParse('#newstext', {rootPath: '/e/extend/ueditor/'}) 帝国CMS显示指定时间内更新的信息数...2016-11-01
  • C#使用TimeSpan时间计算的简单实现

    这篇文章主要给大家介绍了关于C#使用TimeSpan时间计算的相关资料,以及通过一个实例代码给大家介绍了C#使用timespan和timer完成一个简单的倒计时器的方法,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧...2020-06-25
  • C# 当前系统时间获取及时间格式详解

    这篇文章主要介绍了C# 当前系统时间获取及时间格式详解的相关资料,这里提供代码实例,帮助大家学习参考,需要的朋友可以参考下...2020-06-25
  • C#获取文件创建时间的方法

    这篇文章主要介绍了C#获取文件创建时间的方法,涉及C#文件操作的技巧及CreattionTime属性的使用方法,需要的朋友可以参考下...2020-06-25
  • PowerShell中使用Get-Date获取日期时间并格式化输出的例子

    这篇文章主要介绍了PowerShell中使用Get-Date获取日期时间并格式化输出的例子,本文讲解了直接调用Get-Date、在Write-Host中使用Get-Date、格式化输出的方法,需要的朋友可以参考下...2020-06-30
  • php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法

    php获取今日开始时间戳和结束时间戳$beginToday=mktime(0,0,0,date('m'),date('d'),date('Y'));$endToday=mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1;//php获取昨日起始时间戳和结束时间...2013-10-04
  • Mybatis和Mybatis-Plus时间范围查询方式

    这篇文章主要介绍了Mybatis和Mybatis-Plus时间范围查询方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-08-06
  • Vue 中获取当前时间并实时刷新的实现代码

    这篇文章主要介绍了Vue 中获取当前时间并实时刷新,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-05-13
  • python 获取域名到期时间的方法步骤

    这篇文章主要介绍了python 获取域名到期时间的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-10
  • PHP如何通过date() 函数格式化显示时间

    这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
  • 在页面中输出当前客户端时间javascript实例代码

    这篇文章主要介绍了在页面中输出当前客户端时间javascript实例代码的相关资料,需要的朋友可以参考下...2016-03-03