溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

自己寫的和收藏的一寫php函數(shù)

發(fā)布時間:2020-06-29 07:37:00 來源:網(wǎng)絡 閱讀:349 作者:gutaotao1989 欄目:web開發(fā)

1、PHP字符串截取,支持gb2312和UTF-8編碼。

看了網(wǎng)上很多這樣的函數(shù)但用起來效果很不理想,所以自己寫了一個,初步測試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檢測一個目錄是否存在,不存在創(chuàng)建它,存在返回true。

函數(shù)一:代碼簡潔明了

<?php
/**
  +----------------------------------------------------------
 * 功能:檢測一個目錄是否存在,不存在則創(chuàng)建它
 * 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/");//這里帶點和不帶點不一樣
 ?>

函數(shù)二:代碼相對較多。

<?php
/**
 * 檢查目標文件夾是否存在,如果不存在則自動創(chuàng)建該目錄
 *
 * @access      public
 * @param       string      folder     目錄路徑。不能使用相對于網(wǎng)站根目錄的URL
 *
 * @return      bool
 */
function make_dir($folder) {
    $reval = false;
    if (!file_exists($folder)) {
        /* 如果目錄不存在則嘗試創(chuàng)建該目錄 */
        @umask(0);
        /* 將目錄路徑拆分成數(shù)組 */
        preg_match_all('/([^\/]*)\/?/i', $folder, $atmp);
        /* 如果第一個字符為/則當作物理路徑處理 */
        $base = ($atmp[0][0] == '/') ? '/' : '';
                     
        /* 遍歷包含路徑信息的數(shù)組 */
        foreach ($atmp[1] AS $val) {
            if ('' != $val) {
                $base .= $val;
                if ('..' == $val || '.' == $val) {
                    /* 如果目錄為.或者..則直接補/繼續(xù)下一個循環(huán) */
                    $base .= '/';
                    continue;
                }
            } else {
                continue;
            }
            $base .= '/';
                     
            if (!file_exists($base)) {
                /* 嘗試創(chuàng)建目錄,如果創(chuàng)建失敗則繼續(xù)循環(huán) */
                if (@mkdir(rtrim($base, '/'), 0777)) {
                    @chmod($base, 0777);
                    $reval = true;
                }
            }
        }
    } else {
        /* 路徑已經(jīng)存在。返回該路徑是不是一個目錄 */
        $reval = is_dir($folder);
    }
    clearstatcache();
    return $reval;
}
                     
// $myDir = make_dir("./html/phpahz/tk/"); //這里帶點和不帶點不一樣
?>

3、將中英文字符串轉(zhuǎn)換成數(shù)組

<?php
/**
  +----------------------------------------------------------
 * 功能:將中英文字符串轉(zhuǎn)換成數(shù)組
 * leo.li hengqin2008@qq.com
  +----------------------------------------------------------
 * @param string    $path      需要轉(zhuǎn)換成數(shù)組的字符串
  +----------------------------------------------------------
 * @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,不是則轉(zhuǎn)碼為utf8

<?php
/**
  +----------------------------------------------------------
 * 功能:檢測字符串是否是utf8,不是則轉(zhuǎn)碼為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);
}
?>
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI