1、PHP字符串截取,支持gb2312和UTF-8编码。
看了网上很多这样的函数但用起来效果很不理想,所以自己写了一个,初步测试gb2312和UTF8都支持的。
<?php /** +---------------------------------------------------------- * 功能:字符串截取指定长度 * leo.li hengqin2008@qq.com +---------------------------------------------------------- * @param string $string 待截取的字符串 * @param int $len 截取的长度 * @param int $start 从第几个字符开始截取 * @param boolean $suffix 是否在截取后的字符串后跟上省略号 +---------------------------------------------------------- * @return string 返回截取后的字符串 +---------------------------------------------------------- */ function cutStr($string, $len=100, $start=0, $suffix=1) { $strlen = mb_strlen($string); while ($strlen) { $array[] = mb_substr($string, 0, 1, "utf8"); $string = mb_substr($string, 1, $strlen, "utf8"); $strlen = mb_strlen($string); } $end = $len + $start; $str = ''; for ($i = $start; $i < $end; $i++) { $str.=$array[$i]; } return $suffix == 1 ? $str . "..." : $str; } ?>
2、PHP检测一个目录是否存在,不存在创建它,存在返回true。
函数一:代码简洁明了
<?php /** +---------------------------------------------------------- * 功能:检测一个目录是否存在,不存在则创建它 * leo.li hengqin2008@qq.com +---------------------------------------------------------- * @param string $path 待检测的目录 +---------------------------------------------------------- * @return boolean +---------------------------------------------------------- */ function makeDir($path) { return is_dir($path) or (makeDir(dirname($path)) and @mkdir($path, 0777)); } // $myDir = makeDir("./html/phpahz/tk/");//这里带点和不带点不一样 ?>
函数二:代码相对较多。
<?php /** * 检查目标文件夹是否存在,如果不存在则自动创建该目录 * * @access public * @param string folder 目录路径。不能使用相对于网站根目录的URL * * @return bool */ function make_dir($folder) { $reval = false; if (!file_exists($folder)) { /* 如果目录不存在则尝试创建该目录 */ @umask(0); /* 将目录路径拆分成数组 */ preg_match_all('/([^\/]*)\/?/i', $folder, $atmp); /* 如果第一个字符为/则当作物理路径处理 */ $base = ($atmp[0][0] == '/') ? '/' : ''; /* 遍历包含路径信息的数组 */ foreach ($atmp[1] AS $val) { if ('' != $val) { $base .= $val; if ('..' == $val || '.' == $val) { /* 如果目录为.或者..则直接补/继续下一个循环 */ $base .= '/'; continue; } } else { continue; } $base .= '/'; if (!file_exists($base)) { /* 尝试创建目录,如果创建失败则继续循环 */ if (@mkdir(rtrim($base, '/'), 0777)) { @chmod($base, 0777); $reval = true; } } } } else { /* 路径已经存在。返回该路径是不是一个目录 */ $reval = is_dir($folder); } clearstatcache(); return $reval; } // $myDir = make_dir("./html/phpahz/tk/"); //这里带点和不带点不一样 ?>
3、将中英文字符串转换成数组
<?php /** +---------------------------------------------------------- * 功能:将中英文字符串转换成数组 * leo.li hengqin2008@qq.com +---------------------------------------------------------- * @param string $path 需要转换成数组的字符串 +---------------------------------------------------------- * @return array +---------------------------------------------------------- */ function get_mb_substr($string) { $strlen = mb_strlen($string); while ($strlen) { $array[] = mb_substr($string, 0, 1, "utf8"); $string = mb_substr($string, 1, $strlen, "utf8"); $strlen = mb_strlen($string); } return $array; } ?>
4、计算两个日期相差 年 月 日
<?php /** +---------------------------------------------------------- * 功能:计算两个日期相差 年 月 日 * leo.li hengqin2008@qq.com +---------------------------------------------------------- * @param date $date1 起始日期 * @param date $date2 截止日期日期 +---------------------------------------------------------- * @return array +---------------------------------------------------------- */ function DiffDate($date1, $date2) { if (strtotime($date1) > strtotime($date2)) { $ymd = $date2; $date2 = $date1; $date1 = $ymd; } list($y1, $m1, $d1) = explode('-', $date1); list($y2, $m2, $d2) = explode('-', $date2); $y = $m = $d = $_m = 0; $math = ($y2 - $y1) * 12 + $m2 - $m1; $y = round($math / 12); $m = intval($math % 12); $d = (mktime(0, 0, 0, $m2, $d2, $y2) - mktime(0, 0, 0, $m2, $d1, $y2)) / 86400; if ($d < 0) { $m -= 1; $d += date('j', mktime(0, 0, 0, $m2, 0, $y2)); } $m < 0 && $y -= 1; return array($y, $m, $d); } ?>
5、检测字符串是否是utf8,不是则转码为utf8
<?php /** +---------------------------------------------------------- * 功能:检测字符串是否是utf8,不是则转码为utf8 * leo.li hengqin2008@qq.com +---------------------------------------------------------- * @param string $string 起始日期 +---------------------------------------------------------- * @return string 返回UTF8的字符串 +---------------------------------------------------------- */ function checkUtf8($string) { if ($string == '') return; $check = preg_match('%^(?: [\x09\x0A\x0D\x20-\x7E] # ASCII | [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates | \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3 | [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15 | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16 )*$%xs', $string); return $check == 1 ? $string : iconv('gb2312', 'utf-8', $string); } ?>