今天為大家分享一篇PHP封裝curl的調用介面及常用函數詳解,具有很好的參考價值,希望對大家有所協助。一起過來看看吧
如下所示:
<?php/** * @desc 封裝curl的調用介面,post的請求方式 */function doCurlPostRequest($url, $requestString, $timeout = 5) { if($url == "" || $requestString == "" || $timeout <= 0){return false;} $con = curl_init((string)$url); curl_setopt($con, CURLOPT_HEADER, false); curl_setopt($con, CURLOPT_POSTFIELDS, $requestString); curl_setopt($con, CURLOPT_POST, true); curl_setopt($con, CURLOPT_RETURNTRANSFER,true); curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);curl_setopt($con, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($con, CURLOPT_SSL_VERIFYHOST, false); return curl_exec($con);}/** * @desc 封裝curl的調用介面,post的請求方式 */function doCurlPostsslRequest($url, $requestString,$pemfile, $timeout = 5) { if($url == "" || $requestString == "" || $timeout <= 0){return false;}echo $pemfile; $con = curl_init((string)$url); curl_setopt($con, CURLOPT_HEADER, false); curl_setopt($con, CURLOPT_POSTFIELDS, $requestString); curl_setopt($con, CURLOPT_POST, true); curl_setopt($con, CURLOPT_RETURNTRANSFER,true); curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);curl_setopt($con, CURLOPT_SSL_VERIFYPEER, 1);curl_setopt($con, CURLOPT_SSL_VERIFYHOST, 2);//curl_setopt($ch, CURLOPT_SSLCERT, $pemfile); //curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM');curl_setopt($con, CURLOPT_CAINFO, $pemfile); return curl_exec($con);} /** * @desc 封裝curl的調用介面,post Json資料的請求方式 */function doCurlPostJsonReq($url, $requestString, $timeout = 25){if($url == "" || $requestString == "" || $timeout <= 0){return false;} $con = curl_init((string)$url); curl_setopt($con, CURLOPT_HEADER, false); curl_setopt($con, CURLOPT_POSTFIELDS, $requestString); curl_setopt($con, CURLOPT_POST, true); curl_setopt($con, CURLOPT_RETURNTRANSFER,true); curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);curl_setopt($con, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($data_string))); return curl_exec($con);}/** * @desc 封裝curl的調用介面,post form資料的請求方式 */function doCurlPostFormReq($url, $requestString, $timeout = 25){if($url == "" || $requestString == "" || $timeout <= 0){return false;} $con = curl_init((string)$url); curl_setopt($con, CURLOPT_HEADER, false); curl_setopt($con, CURLOPT_POSTFIELDS, $requestString); curl_setopt($con, CURLOPT_POST, true); curl_setopt($con, CURLOPT_RETURNTRANSFER,true); curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);curl_setopt($con, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); return curl_exec($con);}/** * @desc 封裝curl的調用介面,get的請求方式 */function doCurlGetRequest($url, $data = array(), $timeout = 10) {if($url == "" || $timeout <= 0){return false;}if($data != array()) {$url = $url . '?' . http_build_query($data);}Log::write("發送URL[".$url."]");$con = curl_init((string)$url);curl_setopt($con, CURLOPT_HEADER, false);curl_setopt($con, CURLOPT_RETURNTRANSFER,true);curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);curl_setopt($con, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($con, CURLOPT_SSL_VERIFYHOST, false);return curl_exec($con);}/** *截取字串,中文無亂碼*/function msubstr($str, $start=0, $length=0,$suffix=false,$charset="utf-8"){ if(mb_strlen($str,"UTF8") >= $length){ $next_str = "…"; }else{ $next_str = ""; } if(function_exists("mb_substr")){ if($suffix) // return mb_substr($str, $start, $length, $charset)."…"; return mb_substr($str, $start, $length, $charset).$next_str; else return mb_substr($str, $start, $length, $charset); }elseif(function_exists('iconv_substr')) { if($suffix) // return iconv_substr($str,$start,$length,$charset)."…"; return iconv_substr($str,$start,$length,$charset).$next_str; else return iconv_substr($str,$start,$length,$charset); } $re['utf-8'] = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/"; $re['gb2312'] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/"; $re['gbk'] = "/[x01-x7f]|[x81-xfe][x40-xfe]/"; $re['big5'] = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/"; preg_match_all($re[$charset], $str, $match); $slice = join("",array_slice($match[0], $start, $length)); if($suffix) return $slice."…"; if(!$suffix) return $slice; return $slice;}/** *使用者名稱*隱藏 *$str = "如來神掌"; *echo cut_str($str, 1, 0).'**'.cut_str($str, 1, -1); *輸出:如**掌*/function cut_str($string, $sublen, $start = 0, $code = 'UTF-8'){ if($code == 'UTF-8') { $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/"; preg_match_all($pa, $string, $t_string); if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen)); return join('', array_slice($t_string[0], $start, $sublen)); } else { $start = $start*2; $sublen = $sublen*2; $strlen = strlen($string); $tmpstr = ''; for($i=0; $i< $strlen; $i++) { if($i>=$start && $i< ($start+$sublen)) { if(ord(substr($string, $i, 1))>129) { $tmpstr.= substr($string, $i, 2); } else { $tmpstr.= substr($string, $i, 1); } } if(ord(substr($string, $i, 1))>129) $i++; } //if(strlen($tmpstr)< $strlen ) $tmpstr.= "..."; return $tmpstr; }}/**解決json_encode轉換中文的問題,在php5.4下json_encode本身解決的這個問題*/function unescapedUnicode($match){return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');}/***截取手機號*demo:13112345678*return:131****5678*/function hidtel($phone){ $IsWhat = preg_match('/(0[0-9]{2,3}[-]?[2-9][0-9]{6,7}[-]?[0-9]?)/i',$phone); //固定電話 if($IsWhat == 1){ return preg_replace('/(0[0-9]{2,3}[-]?[2-9])[0-9]{3,4}([0-9]{3}[-]?[0-9]?)/i','$1****$2',$phone); }else{ return preg_replace('/(1[358]{1}[0-9])[0-9]{4}([0-9]{4})/i','$1****$2',$phone); }}//擷取IPfunction getIp(){if (isset($_SERVER)){if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){$realip = $_SERVER["HTTP_X_FORWARDED_FOR"];} else if (isset($_SERVER["HTTP_CLIENT_IP"])) {$realip = $_SERVER["HTTP_CLIENT_IP"];} else {$realip = $_SERVER["REMOTE_ADDR"];}} else {if (getenv("HTTP_X_FORWARDED_FOR")){$realip = getenv("HTTP_X_FORWARDED_FOR");} else if (getenv("HTTP_CLIENT_IP")) {$realip = getenv("HTTP_CLIENT_IP");} else {$realip = getenv("REMOTE_ADDR");}}return $realip;}//把漢字轉換為數字function getUnicodeFromOneUTF8($word){//擷取其字元的內部數組表示,所以本檔案應用utf-8編碼! //$word = iconv("gb2312", "utf-8", $word);if (is_array($word)) $arr = $word; else $arr = str_split($word); //此時,$arr應類似array(228, 189, 160) //定義一個Null 字元串儲存 $bin_str = ''; //轉成數字再轉成二進位字串,最後聯合起來。 foreach ($arr as $value) $bin_str .= decbin(ord($value)); //此時,$bin_str應類似111001001011110110100000//正則截取 $bin_str = preg_replace('/^.{4}(.{4}).{2}(.{6}).{2}(.{6})$/','$1$2$3', $bin_str);//此時, $bin_str應類似0100111101100000,如果是漢字"你"return bindec($bin_str); //返回類似20320, 漢字"你" //return dechex(bindec($bin_str)); //如想返回十六進位4f60,用這句
以上就是本文的全部內容,希望對大家的學習有所協助,更多相關內容請關注topic.alibabacloud.com!