PHP获取本周第一天和最后一天

 更新时间:2016年11月25日 15:42  点击:1589
用PHP获取本周第一天和最后一天,网上有很多方法,但是太麻烦,或者有bug,这是用php自带的DateTime类实现的方法,比较简单:

//本周的第一天和最后一天

 代码如下 复制代码
$date=new DateTime();
$date->modify('this week');
$first_day_of_week=$date->format('Y-m-d');
$date->modify('this week +6 days');
$end_day_of_week=$date->format('Y-m-d');


经过测试modity不知道是用做什么了,于时找了另两个例子

 代码如下 复制代码

//这个星期的星期一

// @$timestamp ,某个星期的某一个时间戳,默认为当前时间

// @is_return_timestamp ,是否返回时间戳,否则返回时间格式

function this_monday($timestamp=0,$is_return_timestamp=true){

static $cache ;

$id = $timestamp.$is_return_timestamp;

if(!isset($cache[$id])){

if(!$timestamp) $timestamp = time();

$monday_date = date('Y-m-d', $timestamp-86400*date('w',$timestamp)+(date('w',$timestamp)>0?86400:-/*6*86400*/518400));

if($is_return_timestamp){

$cache[$id] = strtotime($monday_date);

}else{

$cache[$id] = $monday_date;

}

}

return $cache[$id];

 


}


//这个星期的星期天

 代码如下 复制代码

// @$timestamp ,某个星期的某一个时间戳,默认为当前时间

// @is_return_timestamp ,是否返回时间戳,否则返回时间格式

function this_sunday($timestamp=0,$is_return_timestamp=true){

static $cache ;

$id = $timestamp.$is_return_timestamp;

if(!isset($cache[$id])){

if(!$timestamp) $timestamp = time();

$sunday = this_monday($timestamp) + /*6*86400*/518400;

if($is_return_timestamp){

$cache[$id] = $sunday;

}else{

$cache[$id] = date('Y-m-d',$sunday);

}

}

return $cache[$id];

}

本例子实现中文截取会使用到php_mbstring.dll扩展了,所以必须在php.ini中把它们面的;号去去掉然后重启一下apache才可以用哦。

使用此方法之前,请在php.ini中开启php_mbstring.dll扩展,将extension前面的;分号去掉即可

很多截取中文字符串的方法,大多不能实现按中文个数来截取所要的字符,
以下代码可以实现:

 代码如下 复制代码

<?php
mb_internal_encoding('UTF-8');
$str = "中文测试chineseTest";

header('content-type:text/html; charset=UTF-8');
echo mb_strlen($str);
echo '<br/>';
echo mb_substr($str,1,6);
?>

输出结果:
15
文测试chi

上面只是测试,下面整理例子。

 代码如下 复制代码

<?php
/*mb_string方法截取字符串长度
* $arr_str 数组或字符串
* $tlen 截取长度
* $fleid 要截取的字段(数组形式)
*/
header('Content-Type: text/html; charset=utf-8');
function interception($arr_str,$tlen,$fleid='') {
//判断是否是数组
if (is_array($arr_str)) {
//将数组下标重新排列
foreach ($arr_str as $key => $val) {
for ($k = 0; $k < count($fleid); $k++) {
$content = $arr_str[$fleid[$k]];
//判断是否大于指定的长度
if (mb_strlen($content,'utf-8') > $tlen) {
$arr_str[$fleid[$k]] = mb_substr($content,0,$tlen,'utf-8').'...';
}
}
}
}
//判断是否是字符串
elseif (is_string($arr_str)) {
if (mb_strlen($arr_str,'utf-8') > $tlen) {
$arr_str = mb_substr($arr_str,0,$tlen,'utf-8').'...';
}
}
return $arr_str;
}
//使用示例
//数组示例
$array = array(
'ha' => '哈尔滨市',
'bei' => '地球中国北京市',
);
//字符串示例
$string = '中国的互联网:商业化很牛,公共服务几乎没有谢文';
$string2 = 'abcdefghijkl';
print_r(interception($array,2,array('ha','bei')));
echo '<br />'.interception($string,5);
echo '<br />'.interception($string2,5);
?>

php是脚本语言所以在即时聊天中发挥不好,特别是用php当服务器向手机推送信息时,如果信息量有一点多,就会造成php服务器压力山大,不过我们也可用第三方极光推送

我们只需要在极光网站上申请,然后就appkey记录下来,写在代码里我这里是在thinkphp中测试的

 代码如下 复制代码

<?php
class ApipostAction extends Action{
/**
* 模拟post进行url请求
* @param string $url
* @param string $param
*/
private $_appkeys = ‘**********************’;
private $_masterSecret = ‘**********************’;

function request_post($url = ”, $param = ”) {
if (empty($url) || empty($param)) {
return false;
}
$postUrl = $url;
$curlPost = $param;
$ch = curl_init();//初始化curl
curl_setopt($ch, CURLOPT_URL,$postUrl);//抓取指定网页
curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec($ch);//运行curl
curl_close($ch);
return $data;
}
/**
* 发送
* @param int $sendno 发送编号。由开发者自己维护,标识一次发送请求
* @param int $receiver_type 接收者类型。1、指定的 IMEI。此时必须指定 appKeys。2、指定的 tag。3、指定的 alias。4、 对指定 appkey 的所有用户推送消息。* @param string $receiver_value 发送范围值,与 receiver_type相对应。 1、IMEI只支持一个 2、tag 支持多个,使用 “,” 间隔。 3、alias 支持多个,使用 “,” 间隔。 4、不需要填
* @param int $msg_type 发送消息的类型:1、通知 2、自定义消息
* @param string $msg_content 发送消息的内容。 与 msg_type 相对应的值
* @param string $platform 目标用户终端手机的平台类型,如: android, ios 多个请使用逗号分隔
*/
function send($sendno = 0,$receiver_type = 1, $receiver_value = ”, $msg_type = 1, $msg_content = ”, $platform = ‘android’) {
$url = ‘http://api.jpush.cn:8800/sendmsg/v2/sendmsg’;
$param = ”;
$param .= ‘&sendno=’.$sendno;
$appkeys = $this->_appkeys;
$param .= ‘&app_key=’.$appkeys;
$param .= ‘&receiver_type=’.$receiver_type;
$param .= ‘&receiver_value=’.$receiver_value;
$masterSecret = $this->_masterSecret;
$verification_code = md5($sendno.$receiver_type.$receiver_value.$masterSecret);
$param .= ‘&verification_code=’.$verification_code;
$param .= ‘&msg_type=’.$msg_type;
$param .= ‘&msg_content=’.$msg_content;
$param .= ‘&platform=’.$platform;
$res = $this->request_post($url, $param);

$res_arr = json_decode($res, true);
if (intval($res_arr['errcode'])!=0){
return false;
}else{
return true;
}
/*if ($res === false) {
return false;
}
$res_arr = json_decode($res, true);
$res_arr['errmsg']= “没有错误信息”;
switch (intval($res_arr['errcode'])) {
case 0:$res_arr['errmsg'] = ‘发送成功’;   break;
case 10:$res_arr['errmsg'] = ‘系统内部错误’;break;
case 1001:$res_arr['errmsg'] = ‘只支持 HTTP Post 方法,不支持 Get 方法’;break;
case 1002:$res_arr['errmsg'] = ‘缺少了必须的参数’;break;
case 1003:$res_arr['errmsg'] = ‘参数值不合法’;break;
case 1004:$res_arr['errmsg'] = ‘验证失败’;break;
case 1005:$res_arr['errmsg'] = ‘消息体太大’;break;
case 1007:$res_arr['errmsg'] = ‘receiver_value 参数 非法’;break;
case 1008:$res_arr['errmsg'] = ‘appkey参数非法’;break;
case 1010:$res_arr['errmsg'] = ‘msg_content 不合法’;break;
case 1011:$res_arr['errmsg'] = ‘没有满足条件的推送目标’;break;
case 1012:$res_arr['errmsg'] = ‘iOS 不支持推送自定义消息。只有 Android 支持推送自定义消息’;break;
default:break;
}
$msg_content = json_decode($msg_content,true);
if (intval($res_arr['errcode'])==0){
$str= “<li>第”.$res_arr['sendno'].”条发送”.$res_arr['errmsg'].”!</li>”;
}else{
$str= “<li>第”.$res_arr['sendno'].”条发送失败:”.$res_arr['errmsg'].”</li>”;
}
print_r($str);die();*/
}
}
?>

调用
<?php
$receiver_value = 1;//接收者id和n_builder_id相同
$platform = ‘android,ios’;//在上面手机上接收
$msg_content = json_encode(array(‘n_builder_id’=>’1′, ‘n_title’=>’标题’, ‘n_content’=>’内容’,'n_extras’=>array(‘fromer’=>’发送者’,'fromer_name’=>’发送者名字’,'fromer_icon’=>’发送者头像’,'image’=>’发送图片链接’,'sound’=>’发送音乐链接’)));
$this->send($sendno,3,$receiver_value,1,$msg_content,$platform);
?>

递归实现无限分类就是自动调用自己了,下面一个二级分类的例子,如果有你需要就拿去吧,没什么原理下算法的纠结了。

数组:

 代码如下 复制代码

$items = array(
 array('id' => 1, 'pid' => 0, 'name' => '一级11' ),
 array('id' => 11, 'pid' => 0, 'name' => '一级12' ),
 array('id' => 2, 'pid' => 1, 'name' => '二级21' ),
 array('id' => 10, 'pid' => 11, 'name' => '二级22' ),
 array('id' => 3, 'pid' => 1, 'name' => '二级23' ),
 array('id' => 12, 'pid' => 11, 'name' => '二级24' ),
 array('id' => 13, 'pid' => 12, 'name' => '三级31' ),
 array('id' => 9, 'pid' => 1, 'name' => '二级25' ),
);

函数:

 代码如下 复制代码

function formatTree($array, $pid = 0){
 $arr = array();
 $tem = array();
 foreach ($array as $v) {
  if ($v['pid'] == $pid) {
   $tem = formatTree($array, $v['id']);
                        //判断是否存在子数组
   $tem && $v['son'] = $tem;
   $arr[] = $v;
  }
 }
 return $arr;
}

其中,数组一定要包含id和pid用以指定数组值之间的层级关系

下面我们一起来看一个利用php检测指定目录中是不是为空目录了,这里方法是遍历目录得出的结果,下面我们来看个例子。

今天在写上传图片作为封面的时候 为了避免重复的上传封面而导致。封面图片乱设置。就百度出了判断文件夹是否为空的代码

 代码如下 复制代码

<?php
$dir = opendir('1');
$ml = 0;
while (($file = readdir($dir)) !== false)
  { $cs = $ml++;
 if($cs == "2"){echo "有文件";}
  }
  closedir($dir);
 ?>

获取文件夹1的目录。 因为函数会获取.和.. 本身和上级目录都显示出来。这样就循环成了1这样的结果也就是文件夹为空。如果循环到2的时候就会显示出目录下的文件。

例子

 代码如下 复制代码

<?php

function is_empty_dir($dir_path)
{
if (!is_dir($dir_path)){
echo “文件夹不存在”;
return true;//www.111cn.Net
}

$dir = opendir($dir_path);

$is_empty = true;

while ($file = readdir($dir)){

if($file == ‘.’ || $file == ‘..’) continue;

$is_empty = false;

break;

}

closedir($dir);

return $is_empty;

}

?>

例子

 代码如下 复制代码

<?php
$root = dirname(__FILE__);
$root = str_replace("\", "/", $root);
$path = $root.'/test/';

$isempty = file_exit();

//检查目录是否为空
function file_exit($filelastname = ''){

global $path;
if($filelastname != ''){
   $handle = opendir($path.$filelastname);
}else{
   $handle = opendir($path);
}
while (false !== ($file = readdir($handle))) {
   if($file == '.' || $file == '..'){
    continue;
   }
   $file_array[] = $file;
}
if($file_array == NULL){//没有文件
   closedir($handle);
   return false;
}
closedir($handle);
return true;//有文件
}
?>

[!--infotagslink--]

相关文章

  • PHP成员变量获取对比(类成员变量)

    下面本文章来给大家介绍在php中成员变量的一些对比了,文章举了四个例子在这例子中分别对不同成员变量进行测试与获取操作,下面一起来看看。 有如下4个代码示例,你认...2016-11-25
  • php 获取用户IP与IE信息程序

    php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
  • php获取一个文件夹的mtime的程序

    php获取一个文件夹的mtime的程序了,这个就是时间问题了,对于这个问题我们来看小编整理的几个例子,具体的操作例子如下所示。 php很容易获取到一个文件夹的mtime,可以...2016-11-25
  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • 如何获取网站icon有哪些可行的方法

    获取网站icon,常用最简单的方法就是通过website/favicon.ico来获取,不过由于很多网站都是在页面里面设置favicon,所以此方法很多情况都不可用。 更好的办法是通过google提供的服务来实现:http://www.google.com/s2/favi...2014-06-07
  • jquery如何获取元素的滚动条高度等实现代码

    主要功能:获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 :$(window).width(); 获取页面的文档高度 $(document).height(); 获取页面的文档宽度 :$(document).width();...2015-10-21
  • jquery获取div距离窗口和父级dv的距离示例

    jquery中jquery.offset().top / left用于获取div距离窗口的距离,jquery.position().top / left 用于获取距离父级div的距离(必须是绝对定位的div)。 (1)先介绍jquery.offset().top / left css: 复制代码 代码如下: *{ mar...2013-10-13
  • Jquery 获取指定标签的对象及属性的设置与移除

    1、先讲讲JQuery的概念,JQuery首先是由一个 America 的叫什么 John Resig的人创建的,后来又很多的JS高手也加入了这个团队。其实 JQuery是一个JavaScript的类库,这个类库集合了很多功能方法,利用类库你可以用简单的一些代...2014-05-31
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • C#获取字符串后几位数的方法

    这篇文章主要介绍了C#获取字符串后几位数的方法,实例分析了C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • DOM XPATH获取img src值的query

    复制代码 代码如下:$nodes = @$xpath->query("//*[@id='main_pr']/img/@src");$prurl = $nodes->item(0)->nodeValue;...2013-10-04
  • jquery获取tagName再进行判断

    如果是为了取到tagName后再进行判断,那直接用下面的代码会更方便: $(element).is('input') 如果是要取到标签用作到别的地方,可以使用一下代码: $(element)[0].tagName 或: $(element).get(0).tagName...2014-05-31
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • PHP 如何获取二维数组中某个key的集合

    本文为代码分享,也是在工作中看到一些“大牛”的代码,做做分享。 具体是这样的,如下一个二维数组,是从库中读取出来的。 代码清单: 复制代码 代码如下: $user = array( 0 => array( 'id' => 1, 'name' => '张三', 'ema...2014-06-07
  • php获取汉字拼音首字母的方法

    现实中我们经常看到这样的说明,排名不分先后,按姓名首字母进行排序。这是中国人大多数使用的排序方法。那么在php程序中该如何操作呢?下面就分享一下在php程序中获取汉字拼音的首字母的方法,在网上搜到的大多数是有问题的...2015-10-23
  • 使用C#获取系统特殊文件夹路径的解决方法

    本篇文章是对使用C#获取系统特殊文件夹路径的解决方法进行了详细的分析介绍,需要的朋友参考下...2020-06-25
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02