1. 程式人生 > >php常用工具函式集合

php常用工具函式集合

常用工具函式

1.轉換位元組大小

/**
 * 轉換位元組大小
 * @param  [number]  $size   
 * @param  integer $digits 
 * @return [string]
 */
function transByte($size, $digits=2) {
	$units = ['B','KB','MB','GB','TB','PB'];
	$base = 1024;
	$i = floor(log($size,$base));
	return round($size/pow($base,$i),$digits).$units[$i];
}
/**
 * 轉換位元組大小
 * @param [number] $size
 * @return [string]
 */
function format_file_size($size){ $units = ['B','KB','MB','GB','TB','PB']; for ($i = 0; $size >= 1024 && $i < 4; $i++){ $size /= 1024; } return round($size, 2).$units[$i];

2.讀取目錄大小

/**
 * 讀取目錄大小
 * @param  [string] $path
 * @return [number]
 */
function getDirSize(
$path) { global $sum; $handle = opendir($path); while (($item=@readdir($handle))!==false) { $filePath = $path.'/'.$item; if($item!='.'&&$item!='..'){ if(is_file($filePath)) { $sum += filesize($filePath); } if(is_dir($filePath)) { $func = __FUNCTION__; $func($filePath
); } } } close($handle); return $sum; }

3. 開啟中文目錄和輸出中文目錄名亂碼的解決方法

在這裡插入圖片描述

4. 獲得某周開始結束日期

/**
 * 獲取某周開始結束日期
 * @param $year 哪一年
 * @param int $week 第幾周
 * @return mixed
 */
function getWeekday($year, $week = 1)
{
    $year_start = mktime(0, 0, 0, 1, 1, $year);
    $year_end = mktime(0, 0, 0, 12, 31, $year);

    // 判斷第一天是否為第一週的開始
    if (intval(date('W', $year_start)) === 1) {
        $start = $year_start;//把第一天做為第一週的開始
    } else {
        $week++;
        $start = strtotime('+1 monday', $year_start);//把第一個週一作為開始
    }

    // 第幾周的開始時間
    if ($week === 1) {
        $weekday['start'] = $start;
    } else {
        $weekday['start'] = strtotime('+' . ($week - 0) . ' monday', $start);
    }

    // 第幾周的結束時間
    $weekday['end'] = strtotime('+1 sunday', $weekday['start']);
    if (date('Y', $weekday['end']) != $year) {
        $weekday['end'] = $year_end;
    }
    return $weekday;
}

5. 獲得某月開始結束日期

/**
 * 獲取某月開始結束日期
 * @param $date
 * @return mixed
 */
function getMonthRange($date)
{
    $timestamp = strtotime($date);
    $monthFirstDay = date('Y-m-1 00:00:00', $timestamp);//當月第一天
    $monthDay['start'] = $monthFirstDay;
    $countDays = date('t', $timestamp);//當月天數
    $monthDay['end'] = date('Y-m-' . $countDays . ' 23:59:59', $timestamp);
    return $monthDay;

}

6. 簡單模擬請求

/**
 * 模擬請求 http
 * @param $url
 * @param int $httpCode
 * @return mixed
 */
function curl_get($url, &$httpCode = 0)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    //不做證書校驗,部署在linux環境下請改為true
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    $files_contents = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    return $files_contents;

}

7. xml和陣列之間的轉換

    /**
     * 將xml轉換為陣列
     * @param $xml  需要轉換的xml
     * @return mixed
     */
    function xml_to_array($xml) {
        $ob = simplexml_load_string($xml);
        $json = json_encode($ob);
        $array = json_decode($json, true);
        return $array;
    }

    /**
     * 將陣列轉換成xml
     * @param $data 需要轉換的陣列
     * @return string
     */
	 function data_to_xml($data) {
        if (is_object($data)) {
            $data = get_object_vars($data);
        }
        $xml = '';
        foreach ($data as $key => $val) {
            if (is_null($val)) {
                $xml .= "<$key/>\n";
            } else {
                if (!is_numeric($key)) {
                    $xml .= "<$key>";
                }
                $xml .= (is_array($val) || is_object($val)) ? self::data_to_xml($val) : $val;
                if (!is_numeric($key)) {
                    $xml .= "</$key>";
                }
            }
        }
        return $xml;
    }
    
    /**
     * 接收xml資料並轉換成陣列
     * @return array
     *適合用在微信公眾號開發
     */
    function getRequestBean() {
        $bean = simplexml_load_string(file_get_contents('php://input')); // simplexml_load_string() 函式把 XML 字串載入物件中。如果失敗,則返回 false。
        $request = array();
        foreach ($bean as $key => $value) {
            $request [( string )$key] = ( string )$value;
        }
        return $request;
    }

   

8.轉換成gbk或utf-8

   function togbk($val) {
   	return mb_convert_encoding($val,'gbk','utf-8');
   }

   function toutf8($val) {
   	return mb_convert_encoding($val, 'utf-8', 'gbk');
   }
//或者使用iconv函式

9.獲取a-z,A-Z,0-9的隨機字串

**
   * 獲取隨機字串
   * @param $length
   * @return string
   */
function getRandChar($length)
{
    $str = str_shuffle(join('',array_rand(array_flip(array_merge(range('a','z'),range('A','Z'),range(0,9))),$length)));
    return $str;
}

10.獲取日期是第幾周

date('W',strtotime('2015-10-25'));