<?php
header("content-type:text/html;charset='utf-8'");
//设置编码
echo "<meta content='text/html; charset=utf-8' http-equiv='Content-Type'>"; //获取API传过来的信息 queryDate 时间 from_station 始发站编号 to_station 到达站编号
$url = "https://kyfw.12306.cn/otn/lcxxcx/query?purpose_codes=ADULT&queryDate=2016-09-31&from_station=GZQ&to_station=GAZ"; //获取内容 内容是json格式
$data = getContent($url);
function getContent($url){//获取网页中输出部分,并返回字符串
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$dxycontent = curl_exec($ch);
curl_close($ch);
return $dxycontent;
}
//转码
$data = json_decode($data); //json转码之后是对象, 需要将对象转数组 不然无法进行循环
function object_array($array){
if(is_object($array)){
$array = (array)$array;
}
if(is_array($array)){
foreach($array as $key=>$value){
$array[$key] = object_array($value);
}
}
return $array;
}
//得到数组数据
$data2 = object_array($data);
//稍稍美化一下
echo '<table border="1">';
echo '<tr><td>车次</td><td>始发站/到达站/终点站</td><td>出发时间/到达时间</td><td>历时</td><td>商务座</td><td>特等座</td>
<td>一等座</td><td>二等座</td><td>高级软卧</td><td>软卧</td><td>硬卧</td><td>软座</td><td>硬座</td>
<td>无座</td><td>其他</td><td>备注</td></tr>';
//循环
foreach($data2['data']['datas'] as $k=>$v){
echo '<tr><td>'.$v['station_train_code'].'</td><td>'.$v['start_station_name'].'->'.$v['to_station_name'].'->'.$v['end_station_name'].'</td><td>'.$v['start_time'].' / '.$v['arrive_time'].'</td><td>'.$v['lishi'].'</td><td>'.$v['swz_num'].'</td><td>'.$v['tz_num'].'</td><td>'.$v['zy_num'].'</td><td>'.$v['ze_num'].'</td><td>'.$v['gr_num'].'</td><td>'.$v['rw_num'].'</td><td>'.$v['yw_num'].'</td><td>'.$v['rz_num'].'</td><td>'.$v['yz_num'].'</td><td>'.$v['wz_num'].'</td><td>'.$v['qt_num'].'</td><td>'.$v['note'].'</td></tr>';
}
echo '</table>';
/*
* ["gr_num"]=>高级软卧
* ["qt_num"]=>其他
* ["rw_num"]=> 软卧
* ["rz_num"]=>软座
* ["tz_num"]=>特等座
* ["wz_num"]=>无座
* ["yw_num"]=>硬卧
* ["yz_num"]=>硬座
* ["ze_num"]=>二等座
* ["zy_num"]=> 一等座
* ["swz_num"]=> 商务座
*/

php 通过API接口连接12306余票查询的更多相关文章

  1. 用webpy实现12306余票查询

    效果

  2. 火车车次查询-余票查询--Api接口

    1.来自12306的火车车次数据 使用12306网站的接口,查询余票.此接口采集自 这里. 全国火车站代号字典,下载 . 火车票余票查询 http://dynamic.12306.cn/otsquer ...

  3. 12306火车票余票查询&Python实现邮件发送

    查询余票接口 打开12306官网,并进入余票查询页面,同时开启chrome浏览器F12控制台,以北京到上海为例,搜索2018年10月1日的余票信息,点击搜索按钮,可以在控制台发送了一条GET请求,请求 ...

  4. 12306微信小程序上线 提供余票查询暂不支持购票

    12306微信小程序正式上线,如图所示,目前小程序提供余票查询.时刻表查询和正晚点查询三大功能,用户可在这里随时查看剩余车票以及列车时刻表.而且小程序支持用户添加行程,方便出行. 目前这款小程序还不支 ...

  5. Python大法之从火车余票查询到打造抢Supreme神器

    本文作者:i春秋作家——阿甫哥哥 系列文章专辑:https://bbs.ichunqiu.com/forum.php?mod=collection&action=view&ctid=9 ...

  6. Java爬取12306余票

    一.前言 今年国庆和中秋一起放,虽然很欢快,但是没有票了!!! 于是自己倒腾了一个查询余票的小程序. 二.准备工作 1.先打开12306的页面 2.然后右键检查,点network 3.再点一下1230 ...

  7. python打造12306余票实时监控

    # encoding=utf-8from Tkinter import *from ScrolledText import ScrolledTextimport urllib2import jsoni ...

  8. PHP 开发API接口 注册,登录,查询用户资料

    服务端 <?php require 'conn.php'; header('Content-Type:text/html;charset=utf-8'); $action = $_GET['ac ...

  9. python3.7之12306抢票脚本实现

    悲催的12306,彻底沦为各路抢票软件的服务提供方.元旦伊始,纯粹12306官网及APP抢票,愈一周的时间,仅到手一张凌晨3:55回家的站票.为远离脑残,无奈选择抢票软件,预购年后返沪车票.BTW,研 ...

随机推荐

  1. 使用BLADE构建c++工程管理

    使用BLADE构建c++工程管理 字数764 阅读2753 评论2 喜欢4 一. c++工程依赖管理 之前在百度一直使用comake2构建c++项目,十分方便.免去了手写Makefile的痛苦,很多项 ...

  2. linux标准输入输出及错误输出

    Linux Shell 环境中支持输入输出重定向,用符号"<"和">"来表示. 0.1和2分别表示标准输入.标准输出和标准错误信息输出,可以用来指定 ...

  3. OC-常见错误 方法与函数的区别

    对象方法: 1,减号 - 2,声明必须写在@interface和@end之间   实现必须写在@implement 和@end之间 3,对象方法只能由对象来调用 4,对象方法归类.对象所有 函数: 函 ...

  4. C语言打乱一组数字顺序

    #include<stdio.h> #include<stdlib.h> #include<math.h> #include<time.h> int m ...

  5. yii2 数据库操作(转)

    开始使用数据库首先需要配置数据库连接组件,通过添加 db 组件到应用配置实现("基础的" Web 应用是 config/web.php),DSN( Data Source Name ...

  6. C# 常用分页

    var num = TCalcPager.CalcPageCount(addList.Count, TDefautValue.PageSize); ; i < num; i++) { var r ...

  7. mysql支持跨表delete删除多表记录

    前几天写了Mysql跨表更新的一篇总结,今天我们看下跨表删除. 在Mysql4.0之后,mysql开始支持跨表delete. Mysql可以在一个sql语句中同时删除多表记录,也可以根据多个表之间的关 ...

  8. jq 构造函数,然后再表单提交过程中对数据进行修改

    先贴代码 <script type="text/javascript"> function appendText(){ var content = $("#t ...

  9. padding/margin/border 理解

  10. tc 146 2 RectangularGrid(数学推导)

    SRM 146 2 500RectangularGrid Problem Statement Given the width and height of a rectangular grid, ret ...