【推薦】PHP-整合函數總結

來源:互聯網
上載者:User

1. file_get_contents無效時使用
其返回false,使用curl調用

    /*file_get_contents相同功能,curl*/    function file_get_content($url) {        if (function_exists('file_get_contents')) {                $file_contents = @file_get_contents($url);        }        if ($file_contents =='') {            $ch = curl_init();            $timeout = 30;            curl_setopt($ch, CURLOPT_URL, $url);            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);            $file_contents = curl_exec($ch);            curl_close($ch);        }        return $file_contents;    }

  2. PHP產生一個隨機字串

  如果不需要可閱讀的字串,使用此函數替代,即可建立一個隨機字串,作為使用者的隨機密碼等。

function generate_rand($l){       $c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";       srand((double)microtime()*1000000);       for($i=0; $i<$l; $i++) {               $rand.= $c[rand()%strlen($c)];       }       return $rand; }  

  3. 指令碼已耗用時間記錄

當需要檢測指令碼已耗用時間時使用:監測時間開始點:$start_time = runTime();監測時間結束點:$run_time = runTime($start_time);
  /**     * 當 $start_time!=0 計算時間差     * @param int $start_time,開始時間 ,0表示開始計時,有值是返回時間差     * @return float  ,返回目前時間 | 返回時間差,單位為毫秒     */    function runTime($start_time = 0){        if($start_time){            return  runTime()-$start_time;        }else{            list($usec, $sec) = explode(" ", microtime());            $a =  ((float)$usec + (float)$sec)*1000;            return $a;        }    }

  4. xml->array
介面開發的過程中難免用到xml格式,把它轉換成array

function xmlToArray($xml){   //禁止引用外部xml實體   libxml_disable_entity_loader(true);   $xmlstring = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);   $val = json_decode(json_encode($xmlstring),true);   return $val;  }

  5. array->xml

/*數組轉化成XML*/function arrayToXml($arr){    $xml = "<root>";    foreach ($arr as $key=>$val){        if(is_array($val)){            $xml.="<".$key.">".arrayToXml($val)."</".$key.">";        }else{            $xml.="<".$key.">".$val."</".$key.">";        }    }    $xml.="</root>";    return $xml ;}

  6. 寫檔案快取
當訪問量上來時沒有記憶體緩衝redis,memcache時,可以先用檔案快取擋一下。
tips:可以json_encode + md5 作為檔案的名稱,方便緩衝不同查詢條件下的內容。

 /**     * 寫商品資訊到檔案快取,與r_cache合用     * @param $data  ,寫檔案快取的資料     * @param $file_name,檔案名稱     * @param $append,是否是追加寫入檔案     * @param $dir,檔案目錄 ,預設在/var/logdata/121shop/下     */    function w_cache($data,$file_name,$dir,$append = false){        $ret = array('time'=>time(),'data'=>$data);        $ret = json_encode($ret);        if (!@mkdir('/var/logdata/'.$dir.'/', 0755)){            if($append){                // 追加寫入的模式                file_put_contents('/var/logdata/'.$dir.'/'.$file_name.date('Y-m-d'),$ret,FILE_APPEND);            }else{                //重寫的模式覆蓋原來              file_put_contents('/var/logdata/'.$dir.'/'.$file_name,$ret);            }        }    }

  7. 讀檔案快取

 /**     * 讀取商品檔案快取     * @param $min ,緩衝有效時間。預設5分鐘     * @param $file_name ,檔案名稱     * @param $dir ,目錄     * @return bool  檔案不存在 | 資料不存在 | 或者資料時間超過$min分鐘, 返回false     */    function r_cache($min ,$file_name,$dir){        $cache_time = $min * 60 ;//單位秒        $file_name = '/var/logdata/121shop/'.$dir.'/'.$file_name;        if(!is_file($file_name)){            return false;        }        $data = file_get_contents($file_name);        if(empty($data)){            return false;        }        $data = json_decode($data,true);        $now = time();        $data_time = $data['time'];        if($now-$data_time>$cache_time){            return false;        }        return empty($data)?false:$data['data'];    }

  8. 設定檔讀取 C方法
$config_db = include_once PATH.”/Conf/db.php”; //引入資料庫設定檔,返回數組

  // 擷取配置值    function C($name=null, $value=null) {        //靜態局部變數,後面的使用取值都是在 $)config數組取        static $_config = array();        // 無參數時擷取所有        if (empty($name))   return $_config;        // 優先執行設定擷取或賦值        if (is_string($name)) {            if (!strpos($name, '.')) {                $name = strtolower($name);                if (is_null($value))                    return isset($_config[$name]) ? $_config[$name] : null;                $_config[$name] = $value;                return;            }            // 二維數組設定和擷取支援            $name = explode('.', $name);            $name[0]   =  strtolower($name[0]);            if (is_null($value))                return isset($_config[$name[0]][$name[1]]) ? $_config[$name[0]][$name[1]] : null;            $_config[$name[0]][$name[1]] = $value;            return;        }        // include 'config.php' 返回的是一個數組,這個數組作為C函數的參數,所以會跳到這裡,然後將數組的值返回給 $_config        if (is_array($name)){            return $_config = array_merge($_config, array_change_key_case($name));        }        return null; // 避免非法參數    }

  9. PHP擷取IP 位址

  該函數將擷取使用者的真實 IP 位址,即便他使用Proxy 伺服器。

    function getRealIpAddr() {             if (!empty($_SERVER['HTTP_CLIENT_IP'])) {               $ip=$_SERVER['HTTP_CLIENT_IP'];             }elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){          //to check ip is pass from proxy              $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];        } else  {                   $ip=$_SERVER['REMOTE_ADDR'];             }             return $ip;     }  

取上一步來源地址

/** * 取上一步來源地址 * * @param * @return string 字串類型的返回結果 */function getReferer(){    return empty($_SERVER['HTTP_REFERER'])?'':$_SERVER['HTTP_REFERER'];}

  10. PHP尋找兩個字串的相似性

  PHP 提供了一個極少使用的 similar_text 函數,但此函數非常有用,用於比較兩個字串並返回相似程度的百分比。

similar_text($string1, $string2, $percent); 

 11. unicode轉為utf8

/** * unicode轉為utf8 * @param string $str 待轉的字串 * @return string */function unicodeToUtf8($str, $order = "little"){    $utf8string ="";    $n=strlen($str);    for ($i=0;$i<$n ;$i++ )    {        if ($order=="little")        {            $val = str_pad(dechex(ord($str[$i+1])), 2, 0, STR_PAD_LEFT) .            str_pad(dechex(ord($str[$i])),      2, 0, STR_PAD_LEFT);        }        else        {            $val = str_pad(dechex(ord($str[$i])),      2, 0, STR_PAD_LEFT) .            str_pad(dechex(ord($str[$i+1])), 2, 0, STR_PAD_LEFT);        }        $val = intval($val,16); // 由於上次的.串連,導致$val變為字串,這裡得轉回來。        $i++; // 兩個位元組表示一個unicode字元。        $c = "";        if($val < 0x7F)        { // 0000-007F            $c .= chr($val);        }        elseif($val < 0x800)        { // 0080-07F0            $c .= chr(0xC0 | ($val / 64));            $c .= chr(0x80 | ($val % 64));        }        else        { // 0800-FFFF            $c .= chr(0xE0 | (($val / 64) / 64));            $c .= chr(0x80 | (($val / 64) % 64));            $c .= chr(0x80 | ($val % 64));        }        $utf8string .= $c;    }    /* 去除bom標記 才能使內建的iconv函數正確轉換 */    if (ord(substr($utf8string,0,1)) == 0xEF && ord(substr($utf8string,1,2)) == 0xBB && ord(substr($utf8string,2,1)) == 0xBF)    {        $utf8string = substr($utf8string,3);    }    return $utf8string;}

  12. 價格格式化

/*** 價格格式化** @param int    $price* @return string    $price_format*/function PriceFormat($price) {    $price_format= number_format($price,2,'.','');    return $price_format;}

  13. j s判斷訪問網站的類型,ios or android

 var u = navigator.userAgent; var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android終端 var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios終端alert(isAndroid);//true or falsealert(isiOS);
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.