php查询快递的类

<?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);
?>

php快递查询API类

####demo

require("Express.class.php");
$a = new Express();
$result = $a->getorder("全一快递",111309582915);
var_dump($result);

时间: 2024-07-31 21:40:06

php查询快递的类的相关文章

订单快递单号及查询快递进度

订单快递单号及查询快递进度 何须非要使用快递100,爱查等接口来获得快递进度信息?何必非要给自己的网站带上紧箍咒?为何不将选择权给自己的网站客户? 该插件可以: 1. 网站管理员在后台增删改管理自己所合作的快递公司信息: 2. 在后台编辑订单信息输入该订单的快递单号以及选择是哪一家快递公司: 3. 网站顾客在前台查看订单信息时可以看到快递单号,以及可以点击该快递公司的查询快件进度链接,给顾客以充分的自由去自己查询快递进度. mycncart 中国

VB版本查询快递单号源码

能查询各大快递单号,包括申通快递,圆通快递,韵达快递等国内超过90家以上快递单号查询, 如果想快速搭建一个快递单号查询站我推荐这个,这是地址www.aikuaidi.cn,我分享一个VB ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 5

个人小程序实现自然语言对话工程查询--快递,身份证,词典,天气等功能完整代码解析

这个小程序旨在通过自然语言对话查询快递.身份证.天气.诗歌.词典等等的功能. 自然语言对话,即使用中文语言直接对程序下命令,比如:‘查一下天气’,“帮我查一下123456这个运单号吧”,“我想听李白的静夜思”等等. 如果还是不明白,请阅读博客 https://i.cnblogs.com/EditPosts.aspx?postid=7203097&update=1 的前言部分. 1. 小程序功能介绍 如果希望直接体验小程序,请直接扫描下面的二维码,这样更直观. 但是发布的小程序里没有身份证查询,因

使用聚合数据API查询快递数据-短信验证码-企业核名

有位朋友让我给他新开的网站帮忙做几个小功能,如下: 输入快递公司.快递单号,查询出这个快件的所有动态(从哪里出发,到了哪里) 在注册.登录等场景下的手机验证码(要求有一定的防刷策略) 通过输入公司名的关键词,查看这个公司是否已经注册.法人信息.有类似名称的公司等等 并且可以用的接口.文档都提供给我了.其中需求 1.2,都通过 聚合数据 这家网站提供的接口实现:需求 3 通过 云聚数据 来实现. 本项目的文件 因为朋友的网站是用 ThinkPHP 写的,为了保持将来代码的兼容,这三个功能也用 Th

Java查询快递物流信息api接口写法【免费】

效果图: 快递查询API接口是使用的物流单号即可实现实时查询物流信息.主要应用在电商商城.ERP系统商.WMS系统商.快递柜.银行等企业.多家快递物流公司接口统一接入,建议对接接口提供商,一次性可以接入多家快递,在后期的技术维护也会省下很多工作. 目前快递查询API接口有两种实现方式,一种是主动查询,一种是订阅接口推送数据.以快递鸟接口为例(接口对接需要接口秘钥,这里用的是测试的,不能够正式使用,可以到快递鸟官网申请,是免费申请秘钥的)最后会附有一个的demo,更多demo语言可登陆快递鸟网站查

ADO.NET(完整修改和查询、实体类,数据访问类)

一.完整修改和查询 在编写c#语句时需考虑到用户体验,例如在编写修改语句时,需要考虑到输入的内容在数据库中是否能够找到. 中间变量运用. 1.先查 2.执行操作 完整修改语句: bool has = false; Console.Write("请输入要修改的用户名:"); string Uname = Console.ReadLine(); //到数据库中查询输入的用户名是否存在 SqlConnection conn = new SqlConnection("server=.

PHP——分页显示的完善(加查询,用类简化sql语句)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

Mybatis包分页查询java公共类

分页----对于数据量非常大的查询中.是不可缺少的. mybatis底层的分页sql语句因为须要我们自己去手动写.而实现分页显示的时候我们须要依据分页查询条件查询符合条件的总记录数和记录的具体情况.因此,若是不去实现封装一下的话,我们须要写两条SQL语句去实现它.一次用于查询记录数目.一次用于查询分页显示的具体记录. 当项目中碰到非常多须要分页的时候,我们便对于每个Mapper.xml文件都须要去写两条SQL语句. 极其麻烦.代码重用----必须重用.所以,一个公共方法的分页需求应运而生. 直接

drf中 连表深度查询和ListSerializer类包括drf中Response二次封装

drf中Response二次封装: from rest_framework.response import Response ''' return MyResponse(status=1,msg='error',results=[],token='a.b.c',http_status=400,exception=True) Response模块的响应数据 data,最终数据results,Response模块需要向前台展示的一般有响应数据data(包括data里面的results),网络状态码s