12306 火车票价格解析 (PHP 解析)

  1. 从接口拿数据

日期

出发站

终点站

都填上

复制代码
xxx/otn/leftTicketPrice/queryAllPublicPrice?leftTicketDTO.train_date=2024-06-15&leftTicketDTO.from_station=BJP&leftTicketDTO.to_station=SJP&purpose_codes=ADULT

返回的数据是这样的

复制代码
{
    "validateMessagesShowId": "_validatorMessage",
    "status": true,
    "httpstatus": 200,
    "data": [
        {
            "queryLeftNewDTO": {
                "train_no": "25000K772836",
                "station_train_code": "K7725",
                "start_station_telecode": "QTP",
                "start_station_name": "秦皇岛",
                "end_station_telecode": "HDP",
                "end_station_name": "邯郸",
                "from_station_telecode": "FTP",
                "from_station_name": "北京丰台",
                "to_station_telecode": "SJP",
                "to_station_name": "石家庄",
                "start_time": "05:10",
                "arrive_time": "08:44",
                "day_difference": "0",
                "train_class_name": "快速",
                "lishi": "03:34",
                "control_train_day": "",
                "start_train_date": "",
                "seat_feature": "",
                "yp_ex": "",
                "train_seat_feature": "",
                "infoAll_list": "1004150000#3009550001#3009250002#3008750003#1004150000#",
                "yz_price": "00415",
                "yw_price": "00955"
            },
            "buttonTextInfo": ""
        }],
    "messages": [],
    "validateMessages": {}
}
  1. 解析票价
php 复制代码
$t = [];
// 这里需要循环处理
$e = "I026500001#I023500003#J021600001#J019800002#J018500003#O008700000#O008700000#"; // 替换为你的字符串
$n = explode("#", $e);

foreach ($n as $i) {
    if ($i) {
        $a = substr($i, 0, 1);
        $o = strlen($i) >= 10 && $i[9] === '0' ? '' : $i[9];
        $s = round((int)substr($i, 1, 5) / 10, 2); // Assuming you want to round to 2 decimal places, adjust as needed

        $t[$a . $o] = $s;
        if ($o !== '') {
            $t[$a] = $s;
        }
    }
}

dd($t);
function dd($data) {
    print_r($data);
    die();
}

运行出来的结果

封装一下

  1. 与标准座位比较
php 复制代码
	A: "高级动卧",
    B: "混编硬座",
    C: "混编硬卧",
    D: "优选一等座",
    E: "特等软座",
    F: "动卧",
    F1: "下铺",
    F3: "上铺",
    G: "二人软包",
    H: "一人软包",
    H1: "下铺",
    H3: "上铺",
    I: "一等卧",
    I1: "下铺",
    I3: "上铺",
    J: "二等卧",
    J1: "下铺",
    J2: "中铺",
    J3: "上铺",
    K: "混编软座",
    L: "混编软卧",
    M: "一等座",
    O: "二等座",
    P: "特等座",
    Q: "多功能座",
    S: "二等包座",
    0: "棚车",
    1: "硬座",
    2: "软座",
    3: "硬卧",
    31: "下铺",
    32: "中铺",
    33: "上铺",
    4: "软卧",
    41: "下铺",
    43: "上铺",
    5: "包厢硬卧",
    6: "高级软卧",
    61: "下铺",
    63: "上铺",
    7: "一等软座",
    8: "二等软座",
    9: "商务座"

至此 解析车票 大概逻辑完成

相关推荐
sponge'41 分钟前
《以场景为中心的无监督视频全景分割》论文框架讲解
人工智能·深度学习
陕西企来客41 分钟前
2026年7月西安GEO优化哪家好?实战对比评估
人工智能·西安geo优化哪家好
LXT7121 小时前
2026职称申报冲刺期:ChatGPT、Claude、Kimi、雷小兔同题横评
人工智能·chatgpt
sali-tec1 小时前
C# 基于OpenCv的视觉工作流-章98-频域滤波
图像处理·人工智能·opencv·计算机视觉
眼泪划过的星空1 小时前
基于 LangChain 框架构建本地化 RAG 系统:无需调用云端 API 的完整实践
人工智能·langchain
布鲁飞丝1 小时前
彩笔运维勇闯机器学习--cpu与qps的线性关系
运维·人工智能·机器学习
ZHOU_WUYI1 小时前
5. light wam 中video pre阶段
人工智能
2501_926978331 小时前
提示工程的实战报告(二):模型的失败模式与边界行为
人工智能·深度学习·算法
行走的小派1 小时前
Zero 4不是Zero 3W的升级版,是香橙派的策略补位
人工智能·香橙派·边缘ai
IanSkunk1 小时前
企业AI办公落地技术拆解:从WorkBuddy任务引擎到JOTO实施路径
大数据·人工智能