• php快递查询API类-支持各种快递


    <?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);
    ?>
  • 相关阅读:
    导入动态页面的两种方法
    JSTL之c:set
    CentOS更新源
    MVC轻量web应用
    Linux设备驱动开发流程(转)
    g++: internal compiler error: Killed (program cc1plus)Please submit a full bug report,内存不足问题解决
    .PHONY的作用
    CMake(转)
    关于a+++++b含义的问题
    返回值为函数指针的函数(转)
  • 原文地址:https://www.cnblogs.com/shanyansheng/p/5474161.html
Copyright © 2020-2023  润新知