• php快递查询


    http://www.oschina.net/code/snippet_60100_25087

    <?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(){
            $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、Uinx/Linux、C/C++等方面的项目开发。
  • 相关阅读:
    ContentProvider总结2
    ContentProvider总结
    ContentObserver的使用完整详细示例
    性能优化之Java(Android)代码优化
    联系人数据库contacts2.db介绍
    contact2.db最强详解
    Android Uri、UriMatcher、ContentUris详解
    Android三种ContentResolver查询方式
    Oracle SQL_杂记
    啥是Restful?
  • 原文地址:https://www.cnblogs.com/lsl8966/p/6072495.html
Copyright © 2020-2023  润新知