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

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

相关推荐
AI_小站2 小时前
6个GitHub爆火的免费大模型教程,助你快速进阶AI编程
人工智能·langchain·github·知识图谱·agent·llama·rag
xindoo2 小时前
GitHub Trending霸榜!深度解析AI Coding辅助神器 Superpowers
人工智能·github
时间之里2 小时前
【深度学习】:RF-DETR与yolo对比
人工智能·深度学习·yolo
北京阿法龙科技有限公司2 小时前
数智化升级:AR 智能眼镜驱动工业运维效能革新
人工智能
风落无尘2 小时前
《智能重生:从垃圾堆到AI工程师》——第二章 概率与生存
大数据·人工智能
j_xxx404_2 小时前
Linux:静态链接与动态链接深度解析
linux·运维·服务器·c++·人工智能
收获不止数据库2 小时前
达梦9发布会归来:AI 时代,我们需要一款什么样的数据库?
数据库·人工智能·ai·语言模型·数据分析
hhb_6182 小时前
AI全栈编程生存指南
人工智能
AI-Frontiers2 小时前
transformer进阶之路:#2 工作原理详解
人工智能·深度学习·transformer
科研前沿3 小时前
2026 数字孪生前沿科技:全景迭代报告 —— 镜像视界生成式孪生(Generative DT)技术白皮书
大数据·人工智能·科技·算法·音视频·空间计算