You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从PHP curl请求的API响应中提取rcmDriverAgesInfo等指定数据集

RentalCarManager租车API响应字段提取方案

原请求说明

你当前使用的curl请求如下:

curl 'https://apis.rentalcarmanager.com/booking/v3.1/API_KEY/step2/0/5/17_11_2021/11_00/5/23_11_2021/11_00/2/0/-/-?apikey=API_KEY' \
-H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0' \
-H 'Accept: image/webp,*/*' \
-H 'Accept-Language: en-US,en;q=0.5' \
--compressed \
-H 'Connection: keep-alive' \
-H 'Cookie: PHPSESSID=dksko0e9vkcuggi7lk7o94eaq1' \
-H 'Pragma: no-cache' \
-H 'Cache-Control: no-cache' \
-H 'TE: Trailers'

原有PHP实现存在URL拼写错误,API_KEY后多了多余的等号,先修正后再执行字段提取逻辑。

核心提取逻辑实现

因为接口返回的是JS变量赋值格式的内容,我们可以通过正则匹配定位目标变量对应的数组内容,再转成PHP可用的数组格式,完整实现代码如下:

<?php
$curl = curl_init();
// 替换为你实际的API_KEY
$apiKey = '你的实际API_KEY';
$url = "https://apis.rentalcarmanager.com/booking/v3.1/{$apiKey}/step2/0/5/25_10_2021/11_00/5/30_10_2021/11_00/2/0/-/-?apikey={$apiKey}";
curl_setopt_array($curl, array(
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => array(
        'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0',
        'Accept: image/webp,*/*',
        'Accept-Language: en-US,en;q=0.5',
        'Connection: keep-alive',
        'Cookie: PHPSESSID=dksko0e9vkcuggi7lk7o94eaq1',
        'Pragma: no-cache',
        'Cache-Control: no-cache',
    ),
));

$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);

if ($err) {
    die("请求错误:" . $err);
}

// 提取rcmDriverAgesInfo数据
preg_match('/rcmDriverAgesInfo\s*=\s*(.*?);/s', $response, $driverMatch);
$rcmDriverAgesInfo = [];
if (!empty($driverMatch[1])) {
    // 第二个参数为true表示返回数组而非对象
    $rcmDriverAgesInfo = json_decode($driverMatch[1], true) ?: [];
}

// 提取rcmOfficeTimes数据
preg_match('/rcmOfficeTimes\s*=\s*(.*?);/s', $response, $officeMatch);
$rcmOfficeTimes = [];
if (!empty($officeMatch[1])) {
    $rcmOfficeTimes = json_decode($officeMatch[1], true) ?: [];
}

// 测试打印提取结果
print_r($rcmDriverAgesInfo);
print_r($rcmOfficeTimes);
?>

实现说明

  • 正则中的s修饰符用于匹配换行,兼容返回内容中数组跨多行的场景
  • 非贪婪匹配.*?确保只匹配到当前变量赋值的第一个分号位置,不会误匹配后面其他变量的内容
  • 如果返回的JS内容使用单引号包裹字符串,可以先把匹配到的内容里的单引号替换为双引号,再执行json_decode即可

内容的提问来源于stack exchange,提问作者Abhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 20:45:00