分享一些PHP中經常使用的工具裏函數:php
1 <?php 2 3 /** 4 * Created by PhpStorm. 5 * User: Steven 6 * Date: 2016/8/12 7 * Time: 14:21 8 */ 9 class Utils 10 { 11 12 /** 13 * 將xml轉換爲數組 14 * @param $xml 須要轉化的xml 15 * @return mixed 16 */ 17 static function xml_to_array($xml) 18 { 19 $ob = simplexml_load_string($xml); 20 $json = json_encode($ob); 21 $array = json_decode($json, true); 22 return $array; 23 } 24 25 /** 26 * 將數組轉化成xml 27 * @param $data 須要轉化的數組 28 * @return string 29 */ 30 static function data_to_xml($data) 31 { 32 if (is_object($data)) { 33 $data = get_object_vars($data); 34 } 35 $xml = ''; 36 foreach ($data as $key => $val) { 37 if (is_null($val)) { 38 $xml .= "<$key/>\n"; 39 } else { 40 if (!is_numeric($key)) { 41 $xml .= "<$key>"; 42 } 43 $xml .= (is_array($val) || is_object($val)) ? self::data_to_xml($val) : $val; 44 if (!is_numeric($key)) { 45 $xml .= "</$key>"; 46 } 47 } 48 } 49 return $xml; 50 } 51 52 /** 53 * PHP post請求之發送XML數據 54 * @param $url 請求的URL 55 * @param $xmlData 56 * @return mixed 57 */ 58 static function xml_post_request($url, $xmlData) 59 { 60 $header[] = "Content-type: text/xml"; //定義content-type爲xml,注意是數組 61 $ch = curl_init($url); 62 curl_setopt($ch, CURLOPT_URL, $url); 63 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 64 curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 65 curl_setopt($ch, CURLOPT_POST, 1); 66 curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlData); 67 $response = curl_exec($ch); 68 if (curl_errno($ch)) { 69 print curl_error($ch); 70 } 71 curl_close($ch); 72 return $response; 73 } 74 75 /** 76 * PHP post請求之發送Json對象數據 77 * 78 * @param $url 請求url 79 * @param $jsonStr 發送的json字符串 80 * @return array 81 */ 82 static function http_post_json($url, $jsonStr) 83 { 84 $ch = curl_init(); 85 curl_setopt($ch, CURLOPT_POST, 1); 86 curl_setopt($ch, CURLOPT_URL, $url); 87 curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr); 88 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 89 curl_setopt($ch, CURLOPT_HTTPHEADER, array( 90 'Content-Type: application/json; charset=utf-8', 91 'Content-Length: ' . strlen($jsonStr) 92 ) 93 ); 94 $response = curl_exec($ch); 95 $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 96 97 return array($httpCode, $response); 98 } 99 100 /** 101 * PHP post請求之發送數組 102 * @param $url 103 * @param array $param 104 * @return mixed 105 * @throws Exception 106 */ 107 static function httpsPost($url, $param = array()) 108 { 109 $ch = curl_init(); // 初始化一個 cURL 對象 110 curl_setopt($ch, CURLOPT_URL, $url); // 設置須要抓取的URL 111 curl_setopt($ch, CURLOPT_HEADER, 0); // // 設置header 112 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 設置cURL 參數,要求結果保存到字符串中仍是輸出到屏幕上。 113 // 若是你想PHP去作一個正規的HTTP POST,設置這個選項爲一個非零值。這個POST是普通的 application/x-www-from-urlencoded 類型,多數被HTML表單使用。 114 curl_setopt($ch, CURLOPT_POST, 1); 115 curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($param)); // 傳遞一個做爲HTTP 「POST」操做的全部數據的字符串。//http_build_query:生成 URL-encode 以後的請求字符串 116 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 117 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 118 curl_setopt($ch, CURLOPT_HTTPHEADER, array( 119 'Content-type:application/x-www-form-urlencoded;charset=utf-8' 120 )); 121 $rtn = curl_exec($ch); // 運行cURL,請求網頁 122 if ($errno = curl_errno($ch)) { 123 throw new Exception ('Curl Error(' . $errno . '):' . curl_error($ch)); 124 } 125 curl_close($ch); // 關閉URL請求 126 return $rtn; // 返回獲取的數據 127 } 128 129 /** 130 * 接收xml數據並轉化成數組 131 * @return array 132 */ 133 static function getRequestBean() 134 { 135 $bean = simplexml_load_string(file_get_contents('php://input')); // simplexml_load_string() 函數把 XML 字符串載入對象中。若是失敗,則返回 false。 136 $request = array(); 137 foreach ($bean as $key => $value) { 138 $request [( string )$key] = ( string )$value; 139 } 140 return $request; 141 } 142 143 /** 144 * 接收json數據並轉化成數組 145 * @return mixed 146 */ 147 static function getJsonData() 148 { 149 $bean = file_get_contents('php://input'); 150 $result = json_decode($bean, true); 151 return $result; 152 } 153 154 /** 155 * 翻譯中英文字符串(調換位置) 156 */ 157 static function m_strrev($string) 158 { 159 $num = mb_strlen($string, 'utf-8'); 160 $new_string = ""; 161 for ($i = $num - 1; $i >= 0; $i--) { 162 $char = mb_substr($string, $i, 1, 'utf-8'); 163 $new_string .= $char; 164 } 165 return $new_string; 166 } 167 168 /** 169 * 判斷當前服務器系統 170 * @return string 171 */ 172 public static function getOS() 173 { 174 if (PATH_SEPARATOR == ':') { 175 return 'Linux'; 176 } else { 177 return 'Windows'; 178 } 179 } 180 181 /** 182 * 日誌方法 183 * @param $log 184 */ 185 static function writeLog($log) 186 { 187 $dir = __DIR__ . "/../Log/"; 188 if (!is_dir($dir)) { 189 mkdir($dir); 190 } 191 $filename = $dir . date("Y-m-d") . ".log"; 192 file_put_contents($filename, date("Y-m-d H:i:s") . "\t" . $log . PHP_EOL, FILE_APPEND); 193 } 194 195 /** 196 * 簽名驗證函數 197 * @param $param 須要加密的字符串 198 * @param $sign 第三方已經機密好的用來比對的字串 199 * @return bool 200 */ 201 static function ValidateSign($param, $sign) 202 { 203 if (md5($param) == $sign) { 204 return true; 205 } else { 206 return false; 207 } 208 } 209 } 210 211 ?>