最新消息: 新版网站上线了!!!

php获取快递单号

<?php
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(){
        $name = array (
            'EMS' => 'ems',
            '申通' => 'shentong',
            '中通' => 'zhongtong',
            '韵达' => 'yunda',
            '宅急送' => 'zhaijisong',
            '邮政包裹' => 'youzhengguonei',
            '顺丰' => 'shunfeng',
            '圆通' => 'yuantong',
            '百世' => 'huitongkuaidi',
            '天天' => 'tiantian',
            '全峰' => 'quanfengkuaidi',
            '凡客配送' => 'rufengda',
            '百世快递' => 'huitongkuaidi',
            '包裹/平邮' => 'youzhengguonei',
            '邦送物流' => 'bangsongwuliu',
            'DHL' => 'dhl',
            '德邦' => 'debangwuliu',
            '递四方' => 'disifang',
            'E邮宝' => 'ems',
            'EMS国际' => 'emsguoji',
            'FedEx' => 'fedex',
            '飞豹快递' => 'feibaokuaidi',
            '飞康达' => 'feikangda',
            '挂号信' => 'youzhengguonei',
            '国通快递' => 'guotongkuaidi',
            '能达速递' => 'ganzhongnengda',
            '华企快运' => 'huaqikuaiyun',
            '佳吉快运' => 'jiajiwuliu',
            '嘉里大通' => 'jialidatong',
            '急先达' => 'jixianda',
            '快捷速递' => 'kuaijiesudi',
            '跨越速运' => 'kuayue',
            '联邦快递' => 'lianbangkuaidi',
            '联昊通' => 'lianhaowuliu',
            '全峰快递' => 'quanfengkuaidi',
            '全晨快递' => 'quanchenkuaidi',
            '全一快递' => 'quanyikuaidi',
            '速尔快递' => 'suer',
            '尚橙物流' => 'shangcheng',
            'TNT' => 'tnt',
            '天地华宇' => 'tiandihuayu',
            'USPS' => 'usps',
            'UPS' => 'ups',
            '优速快递' => 'youshuwuliu',
            '新邦物流' => 'xinbangwuliu',
            '信丰物流' => 'xinfengwuliu',
            '新蛋物流' => 'neweggozzo',
            '邮政国内' => 'youzhengguonei',
            '邮政国际' => 'youzhengguoji',
            '银捷速递' => 'yinjiesudi',
            '中邮物流' => 'zhongyouwuliu',
            '中铁物流' => 'ztky',
            '中铁快运' => 'zhongtiewuliu',
        );
        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 $postid        快递的单号
     * $data['ischeck'] ==1   已经签收
     * $data['data']        快递实时查询的状态 array
     */
    public  function getorder($name,$postid){
        $keywords = $this->expressname[$name];
        $result = $this->getcontent("http://www.kuaidi100.com/query?type=$keywords&postid=$postid");
        $result = json_decode($result);
        $data = $this->json_array($result);
        return $data;
    }
}
$a = new Express();
$result = $a->getorder("韵达","1000326864434");
echo "<pre>";
print_r($result);
/*  result 部分字段说明
* state 3 完成  0 配送中
* status 200 正常
* condition   H100 配送中   F00 完成
* ischeck 0 未查收  1 查收
*/
?>

转载请注明:谷谷点程序 » php获取快递单号