大家好,又见面了,我是全栈君。
1、PHP字符串截取,支持gb2312和UTF-8编码。
看了网上很多这样的函数但用起来效果很不理想,所以自己写了一个,初步测试gb2312和UTF8都支持的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?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。
函数一:代码简洁明了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?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/");//这里带点和不带点不一样 ?> |
函数二:代码相对较多。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
<?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、将中英文字符串转换成数组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?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、计算两个日期相差 年 月 日
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<?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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?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 ); } ?> |
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/108005.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...