php中常用函數的使用程式碼範例

來源:互聯網
上載者:User
直接上代碼,相信以後會用到的

<?php/** * @param $arr * @param $key_name * @return array * 將資料庫中查出的列表以指定的 id 作為數組的鍵名  */function convert_arr_key($arr, $key_name){    $arr2 = array();    foreach($arr as $key => $val){        $arr2[$val[$key_name]] = $val;            }    return $arr2;}function encrypt($str){    return md5(C("AUTH_CODE").$str);}            /** * 擷取數組中的某一列 * @param type $arr 數組 * @param type $key_name  列名 * @return type  返回那一列的數組 */function get_arr_column($arr, $key_name){    $arr2 = array();    foreach($arr as $key => $val){        $arr2[] = $val[$key_name];            }    return $arr2;}/** * 擷取url 中的各個參數  類似於 pay_code=alipay&bank_code=ICBC-DEBIT * @param type $str * @return type */function parse_url_param($str){    $data = array();    $parameter = explode('&',end(explode('?',$str)));    foreach($parameter as $val){        $tmp = explode('=',$val);        $data[$tmp[0]] = $tmp[1];    }    return $data;}/** * 二維數組排序 * @param $arr * @param $keys * @param string $type * @return array */function array_sort($arr, $keys, $type = 'desc'){    $key_value = $new_array = array();    foreach ($arr as $k => $v) {        $key_value[$k] = $v[$keys];    }    if ($type == 'asc') {        asort($key_value);    } else {        arsort($key_value);    }    reset($key_value);    foreach ($key_value as $k => $v) {        $new_array[$k] = $arr[$k];    }    return $new_array;}/** * 多維陣列轉化為一維數組 * @param 多維陣列 * @return array 一維數組 */function array_multi2single($array){    static $result_array = array();    foreach ($array as $value) {        if (is_array($value)) {            array_multi2single($value);        } else            $result_array [] = $value;    }    return $result_array;}/** * 友好時間顯示 * @param $time * @return bool|string */function friend_date($time){    if (!$time)        return false;    $fdate = '';    $d = time() - intval($time);    $ld = $time - mktime(0, 0, 0, 0, 0, date('Y')); //得出年    $md = $time - mktime(0, 0, 0, date('m'), 0, date('Y')); //得出月    $byd = $time - mktime(0, 0, 0, date('m'), date('d') - 2, date('Y')); //前天    $yd = $time - mktime(0, 0, 0, date('m'), date('d') - 1, date('Y')); //昨天    $dd = $time - mktime(0, 0, 0, date('m'), date('d'), date('Y')); //今天    $td = $time - mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')); //明天    $atd = $time - mktime(0, 0, 0, date('m'), date('d') + 2, date('Y')); //後天    if ($d == 0) {        $fdate = '剛剛';    } else {        switch ($d) {            case $d < $atd:                $fdate = date('Y年m月d日', $time);                break;            case $d < $td:                $fdate = '後天' . date('H:i', $time);                break;            case $d < 0:                $fdate = '明天' . date('H:i', $time);                break;            case $d < 60:                $fdate = $d . '秒前';                break;            case $d < 3600:                $fdate = floor($d / 60) . '分鐘前';                break;            case $d < $dd:                $fdate = floor($d / 3600) . '小時前';                break;            case $d < $yd:                $fdate = '昨天' . date('H:i', $time);                break;            case $d < $byd:                $fdate = '前天' . date('H:i', $time);                break;            case $d < $md:                $fdate = date('m月d日 H:i', $time);                break;            case $d < $ld:                $fdate = date('m月d日', $time);                break;            default:                $fdate = date('Y年m月d日', $time);                break;        }    }    return $fdate;}/** * 返回狀態和資訊 * @param $status * @param $info * @return array */function arrayRes($status, $info, $url = ""){    return array("status" => $status, "info" => $info, "url" => $url);}       /** * @param $arr * @param $key_name  * @param $key_name2 * @return array * 將資料庫中查出的列表以指定的 id 作為數組的鍵名 數組指定列為元素 的一個數組 */function get_id_val($arr, $key_name,$key_name2){    $arr2 = array();    foreach($arr as $key => $val){        $arr2[$val[$key_name]] = $val[$key_name2];    }    return $arr2;}/** *  自訂函數 判斷 使用者選擇 從下面的列表中選擇 可選值列表:不可為空 * @param type $attr_values * @return boolean */function checkAttrValues($attr_values){            if((trim($attr_values) == '') && ($_POST['attr_input_type'] == '1'))                return false;    else        return true; }  // 定義一個函數getIP() 用戶端IP,function getIP(){                if (getenv("HTTP_CLIENT_IP"))         $ip = getenv("HTTP_CLIENT_IP");    else if(getenv("HTTP_X_FORWARDED_FOR"))            $ip = getenv("HTTP_X_FORWARDED_FOR");    else if(getenv("REMOTE_ADDR"))         $ip = getenv("REMOTE_ADDR");    else $ip = "Unknow";    return $ip;}// 伺服器端IP function serverIP(){     return gethostbyname($_SERVER["SERVER_NAME"]);    }     /**  * 自訂函數遞迴的複製帶有多級子目錄的目錄  * 遞迴複製檔案夾  * @param type $src 原目錄  * @param type $dst 複製到的目錄  */                        //參數說明:            //自訂函數遞迴的複製帶有多級子目錄的目錄function recurse_copy($src, $dst){    $now = time();    $dir = opendir($src);    @mkdir($dst);    while (false !== $file = readdir($dir)) {        if (($file != '.') && ($file != '..')) {            if (is_dir($src . '/' . $file)) {                recurse_copy($src . '/' . $file, $dst . '/' . $file);            }            else {                if (file_exists($dst . DIRECTORY_SEPARATOR . $file)) {                    if (!is_writeable($dst . DIRECTORY_SEPARATOR . $file)) {                        exit($dst . DIRECTORY_SEPARATOR . $file . '不可寫');                    }                    @unlink($dst . DIRECTORY_SEPARATOR . $file);                }                if (file_exists($dst . DIRECTORY_SEPARATOR . $file)) {                    @unlink($dst . DIRECTORY_SEPARATOR . $file);                }                $copyrt = copy($src . DIRECTORY_SEPARATOR . $file, $dst . DIRECTORY_SEPARATOR . $file);                if (!$copyrt) {                    echo 'copy ' . $dst . DIRECTORY_SEPARATOR . $file . ' failed<br>';                }            }        }    }    closedir($dir);}// 遞迴刪除檔案夾function delFile($dir,$file_type='') {    if(is_dir($dir)){        $files = scandir($dir);        //開啟目錄 //列出目錄中的所有檔案並去掉 . 和 ..        foreach($files as $filename){            if($filename!='.' && $filename!='..'){                if(!is_dir($dir.'/'.$filename)){                    if(empty($file_type)){                        unlink($dir.'/'.$filename);                    }else{                        if(is_array($file_type)){                            //正則匹配指定檔案                            if(preg_match($file_type[0],$filename)){                                unlink($dir.'/'.$filename);                            }                        }else{                            //指定包含某些字串的檔案                            if(false!=stristr($filename,$file_type)){                                unlink($dir.'/'.$filename);                            }                        }                    }                }else{                    delFile($dir.'/'.$filename);                    rmdir($dir.'/'.$filename);                }            }        }    }else{        if(file_exists($dir)) unlink($dir);    }} /** * 多個數組的笛卡爾積** @param unknown_type $data*/function combineDika() {    $data = func_get_args();    $data = current($data);    $cnt = count($data);    $result = array();    $arr1 = array_shift($data);    foreach($arr1 as $key=>$item)     {        $result[] = array($item);    }            foreach($data as $key=>$item)     {                                        $result = combineArray($result,$item);    }    return $result;}/** * 兩個數組的笛卡爾積 * @param unknown_type $arr1 * @param unknown_type $arr2*/function combineArray($arr1,$arr2) {             $result = array();    foreach ($arr1 as $item1)     {        foreach ($arr2 as $item2)         {            $temp = $item1;            $temp[] = $item2;            $result[] = $temp;        }    }    return $result;}/** * 將二維數組以元素的某個值作為鍵 並歸類數組 * array( array('name'=>'aa','type'=>'pay'), array('name'=>'cc','type'=>'pay') ) * array('pay'=>array( array('name'=>'aa','type'=>'pay') , array('name'=>'cc','type'=>'pay') )) * @param $arr 數組 * @param $key 分組值的key * @return array */function group_same_key($arr,$key){    $new_arr = array();    foreach($arr as $k=>$v ){        $new_arr[$v[$key]][] = $v;    }    return $new_arr;}/** * 擷取隨機字串 * @param int $randLength  長度 * @param int $addtime  是否加入目前時間戳 * @param int $includenumber   是否包含數字 * @return string */function get_rand_str($randLength=6,$addtime=1,$includenumber=0){    if ($includenumber){        $chars='abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNPQEST123456789';    }else {        $chars='abcdefghijklmnopqrstuvwxyz';    }    $len=strlen($chars);    $randStr='';    for ($i=0;$i<$randLength;$i++){        $randStr.=$chars[rand(0,$len-1)];    }    $tokenvalue=$randStr;    if ($addtime){        $tokenvalue=$randStr.time();    }    return $tokenvalue;}/** * CURL請求 * @param $url 請求url地址 * @param $method 要求方法 get post * @param null $postfields post資料數組 * @param array $headers 請求header資訊 * @param bool|false $debug  調試開啟 預設false * @return mixed */function httpRequest($url, $method, $postfields = null, $headers = array(), $debug = false) {    $method = strtoupper($method);    $ci = curl_init();    /* Curl settings */    curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);    curl_setopt($ci, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0");    curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 60); /* 在發起串連前等待的時間,如果設定為0,則無限等待 */    curl_setopt($ci, CURLOPT_TIMEOUT, 7); /* 設定cURL允許執行的最長秒數 */    curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);    switch ($method) {        case "POST":            curl_setopt($ci, CURLOPT_POST, true);            if (!empty($postfields)) {                $tmpdatastr = is_array($postfields) ? http_build_query($postfields) : $postfields;                curl_setopt($ci, CURLOPT_POSTFIELDS, $tmpdatastr);            }            break;        default:            curl_setopt($ci, CURLOPT_CUSTOMREQUEST, $method); /* //佈建要求方式 */            break;    }    $ssl = preg_match('/^https:\/\//i',$url) ? TRUE : FALSE;    curl_setopt($ci, CURLOPT_URL, $url);    if($ssl){        curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, FALSE); // https請求 不驗證認證和hosts        curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, FALSE); // 不從認證中檢查SSL密碼編譯演算法是否存在    }    //curl_setopt($ci, CURLOPT_HEADER, true); /*啟用時會將標頭檔的資訊作為資料流輸出*/    curl_setopt($ci, CURLOPT_FOLLOWLOCATION, 1);    curl_setopt($ci, CURLOPT_MAXREDIRS, 2);/*指定最多的HTTP重新導向的數量,這個選項是和CURLOPT_FOLLOWLOCATION一起使用的*/    curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);    curl_setopt($ci, CURLINFO_HEADER_OUT, true);    /*curl_setopt($ci, CURLOPT_COOKIE, $Cookiestr); * *COOKIE帶過去** */    $response = curl_exec($ci);    $requestinfo = curl_getinfo($ci);    $http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);    if ($debug) {        echo "=====post data======\r\n";        var_dump($postfields);        echo "=====info===== \r\n";        print_r($requestinfo);        echo "=====response=====\r\n";        print_r($response);    }    curl_close($ci);    return $response;    //return array($http_code, $response,$requestinfo);}/** * 過濾數組元素前後空格 (支援多維陣列) * @param $array 要過濾的數組 * @return array|string */function trim_array_element($array){    if(!is_array($array))        return trim($array);    return array_map('trim_array_element',$array);}/** * 檢查手機號碼格式 * @param $mobile 手機號碼 */function check_mobile($mobile){    if(preg_match('/1[34578]\d{9}$/',$mobile))        return true;    return false;}/** * 檢查郵箱地址格式 * @param $email 郵箱地址 */function check_email($email){    if(filter_var($email,FILTER_VALIDATE_EMAIL))        return true;    return false;}/** *   實現中文字串截取無亂碼的方法 */function getSubstr($string, $start, $length) {      if(mb_strlen($string,'utf-8')>$length){          $str = mb_substr($string, $start, $length,'utf-8');          return $str.'...';      }else{          return $string;      }}/** * 判斷當前訪問的使用者是  PC端  還是 手機端  返回true 為手機端  false 為PC 端 * @return boolean *//**  * 是否移動端訪問訪問  *  * @return bool  */function isMobile(){        // 如果有HTTP_X_WAP_PROFILE則一定是行動裝置    if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))    return true;    // 如果via資訊含有wap則一定是行動裝置,部分服務商會屏蔽該資訊    if (isset ($_SERVER['HTTP_VIA']))    {    // 找不到為flase,否則為true    return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;    }    // 腦殘法,判斷手機發送的用戶端標誌,相容性有待提高    if (isset ($_SERVER['HTTP_USER_AGENT']))    {        $clientkeywords = array ('nokia','sony','ericsson','mot','samsung','htc','sgh','lg','sharp','sie-','philips','panasonic','alcatel','lenovo','iphone','ipod','blackberry','meizu','android','netfront','symbian','ucweb','windowsce','palm','operamini','operamobi','openwave','nexusone','cldc','midp','wap','mobile');        // 從HTTP_USER_AGENT中尋找手機瀏覽器的關鍵字        if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT'])))            return true;    }        // 協議法,因為有可能不準確,放到最後判斷    if (isset ($_SERVER['HTTP_ACCEPT']))    {    // 如果只支援wml並且不支援html那一定是行動裝置    // 如果支援wml和html但是wml在html之前則是行動裝置        if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html'))))        {            return true;        }    }            return false; } //php擷取中文字元拼音首字母function getFirstCharter($str){      if(empty($str))      {            return '';                }      $fchar=ord($str{0});      if($fchar>=ord('A')&&$fchar<=ord('z')) return strtoupper($str{0});      $s1=iconv('UTF-8','gb2312',$str);      $s2=iconv('gb2312','UTF-8',$s1);      $s=$s2==$str?$s1:$str;      $asc=ord($s{0})*256+ord($s{1})-65536;     if($asc>=-20319&&$asc<=-20284) return 'A';     if($asc>=-20283&&$asc<=-19776) return 'B';     if($asc>=-19775&&$asc<=-19219) return 'C';     if($asc>=-19218&&$asc<=-18711) return 'D';     if($asc>=-18710&&$asc<=-18527) return 'E';     if($asc>=-18526&&$asc<=-18240) return 'F';     if($asc>=-18239&&$asc<=-17923) return 'G';     if($asc>=-17922&&$asc<=-17418) return 'H';     if($asc>=-17417&&$asc<=-16475) return 'J';     if($asc>=-16474&&$asc<=-16213) return 'K';     if($asc>=-16212&&$asc<=-15641) return 'L';     if($asc>=-15640&&$asc<=-15166) return 'M';     if($asc>=-15165&&$asc<=-14923) return 'N';     if($asc>=-14922&&$asc<=-14915) return 'O';     if($asc>=-14914&&$asc<=-14631) return 'P';     if($asc>=-14630&&$asc<=-14150) return 'Q';     if($asc>=-14149&&$asc<=-14091) return 'R';     if($asc>=-14090&&$asc<=-13319) return 'S';     if($asc>=-13318&&$asc<=-12839) return 'T';     if($asc>=-12838&&$asc<=-12557) return 'W';     if($asc>=-12556&&$asc<=-11848) return 'X';     if($asc>=-11847&&$asc<=-11056) return 'Y';     if($asc>=-11055&&$asc<=-10247) return 'Z';     return null;}

聯繫我們

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