PHP开发实例大全(提高卷) 中文完整pdf扫描版[244MB]
<?php
header( 'Content-Type: text/html; charset=utf-8' ); 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(); $_type = $_GET['type']; $_order = $_GET['order']; $result = $a->getorder("{$_type}","{$_order}"); /* * 4.输入参数 名称 类型 是否必需 描述 id String 是 身份授权key,请 快递查询接口 进行申请(大小写敏感) com String 是 要查询的快递公司代码,不支持中文,对应的公司代码见 《API URL 所支持的快递公司及参数说明》和《支持的国际类快递及参数说明》。 如果找不到您所需的公司,请发邮件至 kuaidi@kingdee.com 咨询(大小写不敏感) nu String 是 要查询的快递单号,请勿带特殊符号,不支持中文(大小写不敏感) valicode String 是 已弃用字段,无意义,请忽略。 show String 是 返回类型: 0:返回json字符串, 1:返回xml对象, 2:返回html对象, 3:返回text文本。 如果不填,默认返回json字符串。 muti String 是 返回信息数量: 1:返回多行完整的信息, 0:只返回一行信息。 不填默认返回多行。 order String 是 排序: desc:按时间由新到旧排列, asc:按时间由旧到新排列。 不填默认返回倒序(大小写不敏感) 5.返回结果 字段名称 字段含义 com 物流公司编号 nu 物流单号 time 每条跟踪信息的时间 context 每条跟综信息的描述 state 快递单当前的状态 : 0:在途,即货物处于运输过程中; 1:揽件,货物已由快递公司揽收并且产生了第一条跟踪信息; 2:疑难,货物寄送过程出了问题; 3:签收,收件人已签收; 4:退签,即货物由于用户拒签、超区等原因退回,而且发件人已经签收; 5:派件,即快递正在进行同城派件; 6:退回,货物正处于退回发件人的途中; 该状态还在不断完善中,若您有更多的参数需求,欢迎发邮件至 kuaidi@kingdee.com 提出。 status 查询结果状态: 0:物流单暂无结果, 1:查询成功, 2:接口出现异常, message 无意义,请忽略 condition 无意义,请忽略 ischeck 无意义,请忽略 6.返回示例 * 调用方法:http://www.yii.com/q.php?type=%E7%94%B3%E9%80%9A&order=768482104793 * * * */ //var_dump($result); if(!isset($result['ischeck'])){echo "error";exit;} if($result['ischeck']==1){echo "己签收";} foreach($result['data'] as $key => $value){ echo $value['context'].'<br/>'; echo $value['ftime'].'<br/>'; echo "<hr>"; }
转载请注明:谷谷点程序 » php获取物流订单号的信息