You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
175 lines
6.3 KiB
PHTML
175 lines
6.3 KiB
PHTML
6 years ago
|
<?php
|
||
|
/*
|
||
|
* @Author: your name
|
||
|
* @Date: 2020-01-14 11:19:04
|
||
|
* @LastEditTime : 2020-01-14 11:30:24
|
||
|
* @LastEditors : Please set LastEditors
|
||
|
* @Description: In User Settings Edit
|
||
|
* @FilePath: \information-system\application\third_party\updatetrain\controllers\updatestation.php
|
||
|
*/
|
||
|
|
||
|
|
||
|
defined('BASEPATH') or exit('No direct script access allowed');
|
||
|
ini_set('memory_limit', '128M');
|
||
|
class updatestation extends CI_Controller
|
||
|
{
|
||
|
|
||
|
|
||
|
public function __construct()
|
||
|
{
|
||
|
parent::__construct();
|
||
|
$this->load->model("station_model");
|
||
|
}
|
||
|
|
||
|
|
||
|
public function index()
|
||
|
{
|
||
|
//
|
||
|
$this->load->view('bootstrap3/header');
|
||
|
$this->load->view('updatestation');
|
||
|
$this->load->view('bootstrap3/footer');
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @description: 从12306抓取数据对比翰特数据库
|
||
|
* @param {type}
|
||
|
* @return:
|
||
|
*/
|
||
|
public function getstatioBy12306()
|
||
|
{
|
||
|
$stationUrl = "https://kyfw.12306.cn/otn/resources/js/framework/station_name.js";
|
||
|
$StationData = $this->get_data($stationUrl);
|
||
|
// echo $StationData;
|
||
|
$arr_Station = explode("@", str_replace("';", "", str_replace("var station_names ='", "", $StationData)));
|
||
|
//print_r($arr_Station);
|
||
|
$NewStation = "";
|
||
|
for ($i = 0; $i < count($arr_Station); $i++) {
|
||
|
if ($arr_Station[$i] != null) {
|
||
|
$arr_StationDetail = explode("|", $arr_Station[$i]);
|
||
|
// print_r($arr_StationDetail);
|
||
|
//对比数据库,如果是新的就保存
|
||
|
$isNew = $this->station_model->GetStationCount($arr_StationDetail[2], $arr_StationDetail[1]);
|
||
|
if ($isNew) {
|
||
|
$NewStation .= $arr_Station[$i]."@";
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
echo $NewStation;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @description: 对比12306与目前的站点文件
|
||
|
* @param {type}
|
||
|
* @return:
|
||
|
*/
|
||
|
public function getNewStationByFile()
|
||
|
{
|
||
|
$stationUrl = "https://kyfw.12306.cn/otn/resources/js/framework/station_name.js";
|
||
|
$StationData = $this->get_data($stationUrl);
|
||
|
$StationFileUrl = "https://biz.chinahighlights.com/china-trains/js/train/StationInfo.js";
|
||
|
$StationFileData = $this->get_data($StationFileUrl);
|
||
|
// echo $StationData;
|
||
|
$arr_Station = explode("@", str_replace("';", "", str_replace("var station_names ='", "", $StationData)));
|
||
|
$arr_StationFile = explode("@", str_replace("\";", "", str_replace("var station_names =\"", "", $StationFileData)));
|
||
|
//print_r($arr_Station);
|
||
|
$NewStation = "";
|
||
|
for ($i = 0; $i < count($arr_Station); $i++) {
|
||
|
$isNew = true;
|
||
|
$arr_StationDetail = explode("|", $arr_Station[$i]);
|
||
|
for ($j = 0; $j < count($arr_StationFile); $j++) {
|
||
|
if ($arr_Station[$i] != null) {
|
||
|
$arr_StationFileDetail = explode("|", $arr_StationFile[$j]);
|
||
|
//对比目前的站点文件,如果是新的就保存
|
||
|
if ($arr_StationDetail[2] == $arr_StationFileDetail[1] && $arr_StationDetail[1] == $arr_StationFileDetail[3]) {
|
||
|
//break;
|
||
|
$isNew = false;
|
||
|
break;
|
||
|
// continue 2;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if ($isNew) {
|
||
|
$NewStation .= $arr_Station[$i]."@";
|
||
|
}
|
||
|
}
|
||
|
echo $NewStation;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @description: 目前站点文件与翰特数据对比
|
||
|
* @param {type}
|
||
|
* @return:
|
||
|
*/
|
||
|
function CheckFileAndHT(){
|
||
|
$StationFileUrl = "https://biz.chinahighlights.com/china-trains/js/train/StationInfo.js";
|
||
|
$StationFileData = $this->get_data($StationFileUrl);
|
||
|
$arr_StationFile = explode("@", str_replace("\";", "", str_replace("var station_names =\"", "", $StationFileData)));
|
||
|
$NewStation = "";
|
||
|
for ($i=0;$i<count($arr_StationFile);$i++){
|
||
|
$arr_StationFileDetail = explode("|", $arr_StationFile[$i]);
|
||
|
//对比数据库,如果是新的就保存
|
||
|
$isNew = $this->station_model->GetStationCount($arr_StationFileDetail[1], $arr_StationFileDetail[3]);
|
||
|
if ($isNew) {
|
||
|
$NewStation .= $arr_StationFile[$i]."@";
|
||
|
|
||
|
//保存到数据库
|
||
|
$data["StationCN"] = $arr_StationFileDetail[3];
|
||
|
$data["Station"] = $arr_StationFileDetail[2];
|
||
|
$data["Code"] = $arr_StationFileDetail[1];
|
||
|
$this->station_model->AddStation($data);
|
||
|
}
|
||
|
}
|
||
|
echo $NewStation;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @description: 从HT获取最新的站点信息
|
||
|
* @param {type}
|
||
|
* @return:
|
||
|
*/
|
||
|
function GetNewStationFromHT(){
|
||
|
//先获取当前使用的站点文件
|
||
|
$StationFileUrl = "https://biz.chinahighlights.com/china-trains/js/train/StationInfo.js";
|
||
|
$StationFileData = $this->get_data($StationFileUrl);
|
||
|
$arr_StationFile = explode("@", str_replace("\";", "", str_replace("var station_names =\"", "", $StationFileData)));
|
||
|
$NewStation = "";
|
||
|
|
||
|
//循环HT站点表对比
|
||
|
$StationList = $this->station_model->GetStationList();
|
||
|
foreach($StationList as $Item){
|
||
|
$isNew = true;
|
||
|
for ($i=0;$i<count($arr_StationFile);$i++){
|
||
|
$arr_StationFileDetail = explode("|", $arr_StationFile[$i]);
|
||
|
//对比数据库,如果是新的就保存
|
||
|
$TRS_StationCN = $Item->TRS_StationCN;
|
||
|
$TRS_Station = $Item->TRS_Station;
|
||
|
$TRS_Code = $Item->TRS_Code;
|
||
|
if ($TRS_StationCN==$arr_StationFileDetail[3] && $TRS_Code==$arr_StationFileDetail[1]){
|
||
|
$isNew = false;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
if ($isNew) {
|
||
|
$NewStation .= $arr_StationFile[$i]."@";
|
||
|
}
|
||
|
}
|
||
|
echo $NewStation;
|
||
|
}
|
||
|
|
||
|
|
||
|
function get_data($url)
|
||
|
{
|
||
|
$ch = curl_init();
|
||
|
curl_setopt($ch, CURLOPT_URL, $url);
|
||
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||
|
curl_setopt($ch, CURLOPT_HEADER, 0);
|
||
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //不验证https证书
|
||
|
$output = curl_exec($ch);
|
||
|
curl_close($ch);
|
||
|
return $output;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* End of file updatestation.php */
|