php實(shí)現(xiàn)12306火車票余票查詢和價(jià)格查詢(12306火車票查詢)
name.php
<?php
train.php
[code]
<?php
/*
*@Description 火車票余票查詢和價(jià)格查詢
*@author widuu
*@mktime 2014/1/13
*/
header("content-type:text/html;charset='utf-8'");
function gettrain($start,$end,$data){
$station = include('./name.php');
$startstaion = $station[$start];
$endstation = $station[$end];
if(empty($data)){
$date = date("Y-m-d",time());
}else{
$num = explode("-", $data);
if(count($num)==2){
$date = date("Y",time())."-".$data;
}else if(count($num)==3){
$date = $data;
}else{
exit("time error");
}
}
if(empty($startstaion)||empty($endstation)){
exit("stdin error");
}
$url ="http://kyfw.12306.cn/otn/lcxxcx/query?purpose_codes=ADULT&queryDate=$date&from_station=$startstaion&to_station=$endstation";
$data = doget($url);
if(!$data['status']){
exit('check error');
}else{
$data = $data['data']['datas'];
foreach ($data as $key => $value) {
$price = doget("http://kyfw.12306.cn/otn/leftTicket/queryTicketPrice?train_no=".$data[$key]["train_no"]."&from_station_no=".$data[$key]["from_station_no"]."&to_station_no=".$data[$key]["to_station_no"]."&seat_types=".$data[$key]["seat_types"]."&train_date=$date");
$data[$key]["gr_num"] = $data[$key]["gr_num"]."(".$price["data"]["A6"].")";
$data[$key]["qt_num"] = $data[$key]["qt_num"]."(".$price["data"]["OT"][0].")";
$data[$key]["rw_num"] = $data[$key]["rw_num"]."(".$price["data"]["A4"].")";
$data[$key]["rz_num"] = $data[$key]["rz_num"]."(".$price["data"]["A2"].")";
$data[$key]["tz_num"] = $data[$key]["tz_num"]."(".$price["data"]["P"].")";
$data[$key]["wz_num"] = $data[$key]["wz_num"]."(".$price["data"]["WZ"].")";
$data[$key]["yw_num"] = $data[$key]["yw_num"]."(".$price["data"]["A3"].")";
$data[$key]["yz_num"] = $data[$key]["yz_num"]."(".$price["data"]["A1"].")";
$data[$key]["ze_num"] = $data[$key]["ze_num"]."(".$price["data"]["O"].")";
$data[$key]["zy_num"] = $data[$key]["zy_num"]."(".$price["data"]["M"].")";
$data[$key]["swz_num"]= $data[$key]["swz_num"]."(".$price["data"]["A9"].")";
}
}
return $data;
}
function doget($url){
if(!function_exists('file_get_contents')) {
$optionget = array('http' => array('method' => "GET", 'header' => "User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.0.04506; CIBA)\r\nAccept:*/*\r\nReferer:https://kyfw.12306.cn/otn/lcxxcx/init"));
$file_contents = file_get_contents($url, false , stream_context_create($optionget));
} else {
$ch = curl_init();
$timeout = 5;
$header = array(
'Accept:*/*',
'Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3',
'Accept-Encoding:gzip,deflate,sdch',
'Accept-Language:zh-CN,zh;q=0.8,ja;q=0.6,en;q=0.4',
'Connection:keep-alive',
'Host:kyfw.12306.cn',
'Referer:https://kyfw.12306.cn/otn/lcxxcx/init',
);
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
}
$file_contents = json_decode($file_contents,true);
return $file_contents;
}
/*
*這個(gè)由于時(shí)間緊寫的,所以很多地方還需要優(yōu)化,希望大家改善一下,可以分部和文件緩存的形式提高執(zhí)行速度--缺點(diǎn)執(zhí)行速度慢--有待優(yōu)化
*/
$data = gettrain("北京","天津","01-03");
/*
* ["gr_num"]=>高級(jí)軟臥
* ["qt_num"]=>其他
* ["rw_num"]=> 軟臥
* ["rz_num"]=>軟座
* ["tz_num"]=>特等座
* ["wz_num"]=>無(wú)座
* ["yw_num"]=>硬臥
* ["yz_num"]=>硬座
* ["ze_num"]=>二等座
* ["zy_num"]=> 一等座
* ["swz_num"]=> 商務(wù)座
*/
$str="";
foreach($data as $key =>$value){
$str.="火車列次:{$data[$key]['station_train_code']}";
$str.="始發(fā)站:{$data[$key]['start_station_name']},終點(diǎn)站{$data[$key]['end_station_name']}<br>";
$str.="出發(fā)時(shí)間:{$data[$key]['start_time']},到站時(shí)間:{$data[$key]['arrive_time']}<br>";
$str.="";
$str.= strpos($data[$key]["gr_num"],"()") ? "" :"高級(jí)軟臥余票和價(jià)格:".$data[$key]["gr_num"]."<br>";
$str.= strpos($data[$key]["qt_num"],"()") ? "" :"其他余票和價(jià)格:".$data[$key]["qt_num"]."<br>";
$str.= strpos($data[$key]["rw_num"],"()") ? "" :"軟臥余票和價(jià)格:".$data[$key]["rw_num"]."<br>";
$str.= strpos($data[$key]["rz_num"],"()") ? "" :"軟座余票和價(jià)格:".$data[$key]["rz_num"]."<br>";
$str.= strpos($data[$key]["tz_num"],"()") ? "" :"特等座余票和價(jià)格:".$data[$key]["tz_num"]."<br>";
$str.= strpos($data[$key]["wz_num"],"()") ? "" :"無(wú)座余票和價(jià)格:".$data[$key]["wz_num"]."<br>";
$str.= strpos($data[$key]["yw_num"],"()") ? "" :"硬臥余票和價(jià)格:".$data[$key]["yw_num"]."<br>";
$str.= strpos($data[$key]["yz_num"],"()") ? "" :"硬座余票和價(jià)格:".$data[$key]["yz_num"]."<br>";
$str.= strpos($data[$key]["ze_num"],"()") ? "" :"二等座余票和價(jià)格:".$data[$key]["ze_num"]."<br>";
$str.= strpos($data[$key]["zy_num"],"()") ? "" :"一等座余票和價(jià)格:".$data[$key]["zy_num"]."<br>";
$str.= strpos($data[$key]["swz_num"],"()") ? "" :"商務(wù)座余票和價(jià)格:".$data[$key]["swz_num"]."<br>";
$str.= "======================下一列火車上===============================<br>";
}
echo $str;
相關(guān)文章
SQL注入寬字節(jié)注入由淺到深學(xué)習(xí)
這篇文章主要為大家介紹了SQL注入寬字節(jié)注入由淺到深學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02yii實(shí)現(xiàn)使用CUploadedFile上傳文件的方法
這篇文章主要介紹了yii實(shí)現(xiàn)使用CUploadedFile上傳文件的方法,結(jié)合具體的前端與后端處理代碼實(shí)例分析了CUploadedFile類的使用方法,需要的朋友可以參考下2015-12-12CentOS 上搭建 PHP7 開(kāi)發(fā)測(cè)試環(huán)境
本文給大家分享的是作者在centos上搭建部署php7的開(kāi)發(fā)測(cè)試環(huán)境的全部過(guò)程,非常的細(xì)致,有需要的小伙伴可以參考下2017-02-02yii2-GridView在開(kāi)發(fā)中常用的功能及技巧總結(jié)
本篇文章主要介紹了yii2-GridView在開(kāi)發(fā)中常用的功能及技巧總結(jié),數(shù)據(jù)網(wǎng)格或者說(shuō) GridView 小部件是Yii中最強(qiáng)大的部件之一。有興趣的可以了解一下。2017-01-01