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: "商务座"

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

相关推荐
郑州光合科技余经理12 小时前
代驾系统架构拆解:订单链路、权限组织与私有化源码交付
开发语言·后端·算法·架构·系统架构·uni-app·php
Shockang14 小时前
AI 编码智能体生产化工程
人工智能
BerryS3N14 小时前
大模型 (LLM) 全栈技术深度解析与实战指南:从 Transformer 底层原理、三阶段训练范式到 RAG 与 Agent 系统架构
深度学习·系统架构·transformer
jay神16 小时前
深度学习确定baseline之后怎么做改进?
人工智能·深度学习·yolo·计算机视觉·分类
acrel716 小时前
安科瑞Acrel-1000变电站综合自动化系统在合肥某新材料公司35kV综合自动化项目中的应用分析
大数据·人工智能
UWA16 小时前
隐藏视频变“常驻刺客”,VideoPlayer与“N/A”纹理该怎么查
人工智能·性能优化·音视频·memory·cpu·游戏开发
V哥AI增长16 小时前
小红书笔记在生成式AI引擎中的可见性机制解析:从抓取原理到GEO工程化实践
大数据·人工智能·笔记
ajassi200016 小时前
AI语音智能体开发日记(十二)GX8006 固件定制指南——从双唤醒词到 UART 音频传输
人工智能·ai·ai编程
大模型momo16 小时前
告别单体 Agent:多智能体设计模式(Multi-Agent Patterns)深度实战手册
人工智能·agent·multi-agent·多agent
DisonTangor16 小时前
【SeeDream开源平替】MiniMax H3 重磅开源:全模态视频生成新标杆,2K 画质 + 原生立体声,15 秒大片一键生成!
人工智能·ai作画·开源·aigc·音视频