1. 程式人生 > >php查詢快遞的類

php查詢快遞的類

this sch kuaidi100 exists 申通快遞 lose etc reac conn


php查詢快遞的類.php


<?php
/**
 *  Express.class.php           快遞查詢類
 *
 * @copyright           widuu
 * @license         http://www.widuu.com
 * @lastmodify          2013-6-19
 */

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>\w+)\"\>\<span\>(?P<title>.*)\<\/span>/iU",$result,$data);
        $name = array();
        foreach($data[‘title‘] as $k=>$v){
            $name[$v] =$data[‘name‘][$k];
        }
        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];
        $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("全一快遞",111309582915);
var_dump($result);
?>

php快遞查詢API類

####demo

require("Express.class.php");
$a = new Express();
$result = $a->getorder("全一快遞",111309582915);
var_dump($result);

php查詢快遞的類