文章来源:jquery教程?-?http://www.jq-school.com/Show.aspx?id=328
?
前面已经分享了
1、PHP常用功能代码片段(1~5)
2、PHP常用功能代码片段(6~10)
3、PHP常用功能代码片段(11~15)
今天是第4篇,主要有截取字符串、计算一年多少个星期,返回一个星期的开始时间和结束时间(可选返回时间戳或日期)、实现递归创建多级目录、递归删除目录、检测QQ状态等功能,也就是第16到20这5个实用代码片段,希望可以帮到jquery学堂群里面的成员和广大对PHP开发的网友们提高开发效率,以下是第4篇文章。
16、PHP实现截取字符串的通用方法
class="brush: 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 '出错了'; }
?