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

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

相关推荐
米小虾3 分钟前
不偷权重,只问问题:蒸馏攻击是怎么把前沿模型"问"走的,以及什么真能挡住
人工智能
2601_9605544710 分钟前
会议录音一键生成纪要:实测告别手工整理
人工智能
米小虾14 分钟前
一周 AI 观察(9.5–9.11):AI 从"产品"变成"基础设施"
人工智能
Behaviour15 分钟前
iPhone Duo 来了,苹果 Siri AI 接入定制 Gemini
人工智能·ios·语言模型·aigc·iphone
不要生病了34 分钟前
扩散语言模型的“灵活性陷阱”:为什么训练时反而应该按自回归顺序探索?
人工智能·语言模型·回归
前端snow41 分钟前
ai agent---语音交互
人工智能
IT·陈寒1 小时前
Vue组件props传对象给我整不会了
人工智能·大模型·api·创业·变现·简历优化
2601_965742221 小时前
全媒体运营与短视频代运营,两者有什么区别?
大数据·数据结构·人工智能·算法·ai·媒体
Joker-Zohar1 小时前
GPT-Image-2.5 双版本上线:8 组压力测试的提示词拆解,中文渲染零乱码
人工智能·gpt
白帽黑客-晨哥1 小时前
Copilot 能换成本地吗?本地化 AI 编程助手可行性全解析
人工智能·copilot