<?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 查收
*/
?>