<?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. border设置不占用宽度

    经常我们设置好了DIV或其他标签的宽度,但是一加边框,宽度就又增加了,尤其是用百分比的时候,宽度控制不好真是麻烦! 如下有一解决办法,代码如下,(新属性,兼容性不好,手机端.谷歌.火狐测试可以) -w ...

  2. Yii2 redis与cache

    原文地址:http://www.myexception.cn/php/1974979.html composer require yiisoft/yii2-redis 安装后使用超简单,打开 comm ...

  3. Winform端上传图片到服务器

    转载自  在winform实现文件上传到服务器 webform上传文件可能大家都写过很多,一个HtmlInputFile.PostedFile.SaveAs就搞定了,不过不知道大家有没有在winfor ...

  4. WinForm使用皮肤图文步骤

    Winfrom本身样式提供的是Windows经典样式.. 不说多丑也绝称不上好看..有时为了用户体验就不得不需要想办法弄漂亮一点..皮肤包会是一个不错的选择.. 不废话了..开整.. 首先从网上下载免 ...

  5. 浅谈T-SQL中的联接查询

    引言 平时开发时,经常会使用数据库进行增删改查,免不了会涉及多表联接.今天就简单的记录下T-SQL下的联接操作. 联接类型及其介绍 在T-SQL中联接操作使用的是JOIN表运算符.联接有三种基本的类型 ...

  6. 计算机中的DMA的多种含义?

    DMA: 一是 动态内存分配:dynamic memory allocate. 就是程序在执行过程中分配内存. 这就是我们在c/c++中经常用到的new, delete, alloc(函数)等等. [ ...

  7. PHP中spl_autoload_register()函数

    spl_autoload_register — 注册给定的函数作为 __autoload 的实现 官方地址:http://php.net/manual/zh/function.spl-autoload ...

  8. Node.SelectNodes

    http://www.crifan.com/csharp_under_some_node_search_specific_child_node/ https://msdn.microsoft.com/ ...

  9. python基础教程1

    python作为一种编程语言,诞生于1990年左右,算是一门比较年轻的语言(也算是90后吧),它是面向对象的,但不同于JAVA\C#那么严格要求一切皆对象,更接近于C++,是面向过程和面向对象的结合: ...

  10. php从零开始

    吐槽:今天开始撸PHP了,从此前端少了个小白,PHP多了个小白... 本白从3年前陆陆续续开始一会儿撸会儿PHP一会儿撸前端.前端撸的比较多,PHP撸的比较少,当然本白撸php大多都是被逼的!! 然后 ...