PHP进行日期计算

PHP需要进行日期计算的时候,可以使用PHP自带的date_diff进行计算操作,而无需进行时间戳转换等复杂操作

<?php 
$date_expire = '2021-03-07 23:59:59';
$date_now = date("Y-m-d G:i:s",time());
$date = new DateTime($date_expire);
$now = new DateTime($date_now);
$diff = date_diff($date,$now);

echo $diff->format(' %a 日 %h 小时 %i 分 %s 秒"');
?>

使用FORMAT是为了格式化一下输出的时间

PHP date_interval_format() 函数参数

参数描述
format

必需。规定格式。format 参数字符串可以使用下列的字符:

  • % – Literal %
  • Y – 年,至少 2 个数字,带前导零(例如 03)
  • y – 年(例如 3)
  • M – 月,带前导零(例如 06)
  • m – 月(例如 6)
  • D – 日,带前导零(例如 09)
  • d – 日(例如 9)
  • a – 由 date_diff() 得出的两个日期间隔的总天数
  • H – 小时,带前导零(例如 08、23)
  • h – 小时(例如 8、23)
  • I – 分,带前导零(例如 08、23)
  • i – 分(例如 8、23)
  • S – 秒,带前导零(例如 08、23)
  • s – 秒(例如 8、23)
  • R – 当负数时为符号 “-“,当正数时为符号 “+”
  • r – 当负数时为符号 “-“,当正数时为空

注释:每个格式字符串必须以 % 符号作为前缀!

laravel更改public目录名(去掉地址里的public)

话说今天有一个前同事问我初接触laravel框架,发现地址栏里有public名,怎么去除。

其实度娘或者谷歌一下就可以得到一个简单的解决办法(修改server.php文件),但实际上laravel(我的前同事就经常给打成lavarel)的结构是尽量避免其他系统文件可以被直接使用URL访问,那么正确的放置方式是,除了PUBLIC目录内的文件上传至环境主机WEB目录之外,其他都放置在与WEB根目录同级的位置。

我的这位前同事使用的是AMH框架,只需要将内容使用SSH上传或者给WEB之前的主标志域名一级目录给一个775甚至777权限,上传完毕再改回来即可

/home/wwwroot/环境名/domain/主标志域名/

具体LINUX目录权限操作命令可自行搜索。

至于有人问我没有VPS只有一个虚拟主机,个人建议还是放弃折腾框架吧,用个现成的CMS或者BLOG不好么?

 

一个PHP裁切字符的function

主要应用在THINKPHP的模板上

function msubpost($str, $start=0, $length=18, $charset="utf-8", $suffix=false) {
  if(strlen($str) > ($length*2)){
    $suffix = true;
  }else{
    $suffix = false;
  }
  if(function_exists('iconv_substr') || $charset=="utf-8") {
    $slice = iconv_substr($str,$start,$length,$charset);
    if(false === $slice) {
        $slice = '';
    }
  }elseif(function_exists("mb_substr")){
    $slice = mb_substr($str, $start, $length, $charset);
  }else{
    $re['utf-8']   = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
    $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
    $re['gbk']    = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
    $re['big5']   = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
    preg_match_all($re[$charset], $str, $match);
    $slice = join("",array_slice($match[0], $start, $length));
  }
  return $suffix ? $slice.'...' : $slice;
}

WordPress伪静态链接也许你不知道的参数

WordPress的伪静态(固定连接)看上去是固定的样子,但实际上是有很多自定义参数的。下面就为大家揭秘这些参数,具体的使用方法,和%post_id%一样,在自定义里面写入即可。

为了让大家看着方便,为大家提供多种语言的版本~

%year%
The year of the post, four digits, for example 2004
 %monthnum%
Month of the year, for example 05
 %day%
Day of the month, for example 28
 %hour%
Hour of the day, for example 15
 %minute%
Minute of the hour, for example 43
 %second%
Second of the minute, for example 33
 %post_id%
The unique ID # of the post, for example 423
 %postname%
A sanitized version of the title of the post (post slug field on Edit Post/Page panel). So “This Is A Great Post!” becomes this-is-a-great-post in the URI.
 %category%
A sanitized version of the category name (category slug field on New/Edit Category panel). Nested sub-categories appear as nested directories in the URI.
 %author%
A sanitized version of the author name.
 %year% 
投稿された年を4桁で取得します。例えば、2004です。
 %monthnum% 
投稿された月を取得します。例えば、05です。
 %day% 
投稿された日を取得します。例えば、28です。
 %hour% 
投稿された時(時間)を取得します。例えば、15です。
 %minute% 
投稿された分を取得します。例えば、43です。
 %second% 
投稿された秒を取得します。例えば、33です。
 %post_id% 
投稿の固有IDを取得します。例えば、423です。
 %postname% 
投稿の投稿名を取得します。
 %category% 
投稿のカテゴリーを取得します。サブカテゴリーは入れ子にされたディレクトリとして取得されます。
 %author% 
投稿の作成者を取得します。
%year% 
文章发表的年份,四位数,如 2004
%monthnum% 
月份,如 05
%day% 
天,如 28
%hour% 
小时,如 15
%minute% 
分钟,如 43
%second% 
秒,如 33
%postname% 
文章标题的别名 (编辑文章/页面时的别名栏)。对于文章标题为 “This Is A Great Post!” 的%postname%是this-is-a-great-post(查看 仅仅使用 %postname%)。 出于性能原因,强烈不建议使用%postname%作为链接地址的开头。 *** 注 - 从WordPress 2.0开始这条建议可以无视了。
%post_id% 
文章的唯一ID,如 423
%category% 
分类的别名 (新建/编辑分类时的别名栏)。 有层级关系的类型在链接地址里就像有层级的目录。 出于性能原因,强烈不建议使用%category%作为链接地址的开头。
%tag% 
标签的别名(新建/编辑标签时的别名栏)。 出于性能原因,强烈不建议使用%tag%作为链接地址的开头。
%author% 
作者的别名。

WDCP安装memcached出现No such file or directory错误解决

查看具体的流程就会发现,SH脚本中会通过cloud.github.com和memcached.googlecode.com下载压缩包,但这2个地址在咱们国内因为被墙所以下载不到,方法也很简单,手动下载这2个文件用FTP工具上传到服务器,再重新安装即可
本站提供下载,点击下面链接进入下载
http://pan.baidu.com/s/1lk8xC

然后手动上传到/TMP文件夹内,重新执行

sh memcached_ins.sh