php常用功能代码,直接可以拿来用的PHP常用功能代码片段(16~20)

16、PHP实现截取字符串的通用方法

/**

* 截取字符串

* params $string 要截取的字符串

* params $length: 保留长度(字符数)

* params $dot: 多余部分显示

**/

function _cutstr($string, $length, $dot = ' ...') {

if(strlen($string) <= $length) {

return $string;

}

$string = str_replace(array('&', '"', ''), array('&', '"', ''), $string);

$strcut = '';

$n = $tn = $noc = 0;

while($n < strlen($string)) {

$t = ord($string[$n]);

if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {

$tn = 1; $n++; $noc++;

} elseif(194 <= $t && $t <= 223) {

$tn = 2; $n += 2; $noc += 2;

} elseif(224 <= $t && $t < 239) {

$tn = 3; $n += 3; $noc += 2;

} elseif(240 <= $t && $t <= 247) {

$tn = 4; $n += 4; $noc += 2;

} elseif(248 <= $t && $t <= 251) {

$tn = 5; $n += 5; $noc += 2;

} elseif($t == 252 || $t == 253) {

$tn = 6; $n += 6; $noc += 2;

} else {

$n++;

}

if($noc >= $length) {

break;

}

}

if($noc > $length) {

$n -= $tn;

}

$strcut = substr($string, 0, $n);

$strcut = str_replace(array('&', '"', ''), array('&', '"', ''), $strcut);

return $strcut.$dot;

}

17、PHP实现计算一年多少个星期,返回一个星期的开始时间和结束时间(可选返回时间戳或日期)

function getWeekStartAndEnd ($year,$week=1) {

header("Content-type:text/html;charset=utf-8");

date_default_timezone_set("Asia/Shanghai");

$year = (int)$year;

$week = (int)$week;

//按给定的年份计算本年周总数

$date = new DateTime;

$date->setISODate($year, 53);

$weeks = max($date->format("W"),52);

//如果给定的周数大于周总数或小于等于0

if($week>$weeks || $week<=0){

return false;

}

//如果周数小于10

if($week<10){

$week = '0'.$week;

}

//当周起止时间戳

$timestamp['start'] = strtotime($year.'W'.$week);

$timestamp['end'] = strtotime('+1 week -1 day',$timestamp['start']);

//当周起止日期

$timeymd['start'] = date("Y-m-d",$timestamp['start']);

$timeymd['end'] = date("Y-m-d",$timestamp['end']);

//返回起始时间戳

return $timestamp;

//返回日期形式

//return $timeymd;

}

18、PHP实现递归创建多级目录的通用方法

/**

*

+--------------------------------------------------------------------

* Description 递归创建目录

+--------------------------------------------------------------------

* @param string $dir 需要创新的目录

+--------------------------------------------------------------------

* @return 若目录存在,或创建成功则返回为TRUE

+--------------------------------------------------------------------

* @author gongwen

+--------------------------------------------------------------------

*/

function mkdirs($dir, $mode = 0777){

if (is_dir($dir) || mkdir($dir, $mode)) return TRUE;

if (!mkdirs(dirname($dir), $mode)) return FALSE;

return mkdir($dir, $mode);

}

19、PHP实现递归删除目录的通用方法

/**

*

+--------------------------------------------------------------------

* Description 递归删除目录

+--------------------------------------------------------------------

* @param string $dir 需要删除的目录

+--------------------------------------------------------------------

* @return 若目录不存在或册除成功则返回为TRUE

+--------------------------------------------------------------------

* @author gongwen

+--------------------------------------------------------------------

*/

function rmdirs($dir){

if (!is_dir($dir) || rmdir($dir)) return TRUE;

if($dir_handle=opendir($dir)){

while($filename=readdir($dir_handle)){

if($filename!='.' && $filename!='..'){

$subFile=$dir.'/'.$filename;

}

is_dir($subFile)?rmdirs($subFile):unlink($subFile);

}

closedir($dir_handle);

return rmdir($dir);

}

}

20、PHP实现检测QQ状态的通用方法

function qq_status(){

if (empty($qq))$qq = 429590191;

$url = 'http://wpa.qq.com/pa?p=2:'.$qq.':52';

$Headers = get_headers($url, 1);

if ($Headers['Location']=='http://pub.idqqimg.com/qconn/wpa/button/button_121.gif'){

$Status = 1; //QQ在线

}elseif ($Headers['Location']=='http://pub.idqqimg.com/qconn/wpa/button/button_120.gif'){

$Status = 2; //QQ离线

}else {

$Status = 0; //未知

}

Return $Status;

}

//测试数据

$qqwp = qq_status('429590191'); //测试QQ是否在线,返回1=在线,返回2=离线,返回0=错误

if ($qqwp==1){

echo 'QQ在线';

}elseif ($qqwp==2){

echo 'QQ离线';

}else {

echo '出错了';

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值