標籤:
<?phpheader("Content-type:text/html;charset=utf-8");/** * Express.class.php 快遞查詢類 * * @copyright chzeze * @lastmodify 2015-10-27 */class Express { private $expressname =array(); //封裝了快遞名稱 function __construct(){ $this->expressname = $this->expressname(); } /* * 採集網頁內容的方法 */ private function getcontent($url){ if(function_exists("file_get_contents")){ $file_contents = file_get_contents($url); }else{ $ch = curl_init(); $timeout = 5; 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; } /* * 擷取對應名稱和對應傳值的方法 */ private function expressname(){ $result = $this->getcontent("http://www.kuaidi100.com/"); //爬取快遞名稱對應的快遞代碼 preg_match_all("/data\-code\=\"(?P<name_code>\w+)\"\>(?P<name>.*)\<\/a>/iU",$result,$data);//(?P<name>)正則匹配儲存字元 $name = array(); //var_dump($data[‘name‘]); //echo "<br>"; foreach($data[‘name‘] as $k=>$v){ $name[$v] =$data[‘name_code‘][$k];//例:$name[中通]=zhontong echo "[".$v."]=".$name[$v]."<br>";//擷取快遞編碼 } echo "一次查詢"."<br>"; return $name; } /* * 解析object成數組的方法 * @param $json 輸入的object數組 * return $data 數組 */ private function json_array($json){ if($json){ foreach ((array)$json as $k=>$v){ $data[$k] = !is_string($v)?$this->json_array($v):$v; } return $data; } } /* * 返回$data array 快遞數組 * @param $name 快遞名稱 * 支援輸入的快遞名稱如下 * (申通-EMS-順豐-圓通-中通-如風達-韻達-天天-匯通-全峰-德邦-宅急送-安信達-包裹平郵-邦送物流 * DHL快遞-大田物流-德邦物流-EMS國內-EMS國際-E郵寶-凡客配送-國通快遞-挂號信-共速達-國際小包 * 匯通快遞-華宇物流-匯強快遞-佳吉快運-佳怡物流-加拿大郵政-快捷速遞-龍邦速遞-聯邦快遞-聯昊通 * 能達速遞-如風達-瑞典郵政-全一快遞-全峰快遞-全日通-申通快遞-順豐快遞-速爾快遞-TNT快遞-天天快遞 * 天地華宇-UPS快遞-新邦物流-新蛋物流-香港郵政-圓通快遞-韻達快遞-郵政包裹-優速快遞-中通快遞) * 中鐵快運-宅急送-中郵物流 * @param $order 快遞的單號 * $data[‘ischeck‘] ==1 已經簽收 * $data[‘data‘] 快遞即時查詢的狀態 array */ public function getorder($name,$order){ $keywords = $this->expressname[$name]; //var_dump($keywords); $result = $this->getcontent("http://www.kuaidi100.com/query?type={$keywords}&postid={$order}"); $result = json_decode($result); $data = $this->json_array($result); return $data; }}$a = new Express();$result = $a->getorder("順豐",688625443900);var_dump($result);/*for($num=688625443009;$num<=688625443999;$num++){ $result = $a->getorder("順豐",$num); var_dump($result); echo "<br>";}*/?>
PHP快遞介面API