自己寫的和收藏的一寫php函數

來源:互聯網
上載者:User

標籤:php函數

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

看了網上很多這樣的函數但用起來效果很不理想,所以自己寫了一個,初步測試gb2312和UTF8都支援的。

<?php/**  +---------------------------------------------------------- * 功能:字串截取指定長度 * leo.li [email protected]  +---------------------------------------------------------- * @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 [email protected]  +---------------------------------------------------------- * @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 [email protected]  +---------------------------------------------------------- * @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 [email protected]  +---------------------------------------------------------- * @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 [email protected]  +---------------------------------------------------------- * @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);}?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.