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

如何用PHP从含HTTP头的API响应中提取视频内容并存入变量?

规范提取视频编码字符串的方法

不要用字符串截取JSON内容,正确的步骤应该是先分离HTTP响应头部与响应体,再解析JSON提取目标字段,具体实现如下:

1. 分离HTTP头部与响应体

cURL返回的完整响应中,头部和响应体以\r\n\r\n作为分隔符,我们可以通过这个标记精准拆分:

// 找到头部与响应体的分隔位置
$separatorPos = strpos($response, "\r\n\r\n");
if ($separatorPos === false) {
    die("Invalid HTTP response format");
}

// 截取响应体部分
$jsonBody = substr($response, $separatorPos + 4); // +4 跳过 "\r\n\r\n" 四个字符

2. 解析JSON并提取video字段

将响应体解析为PHP数组或对象,直接访问video字段:

// 解析JSON为关联数组(第二个参数为true)
$data = json_decode($jsonBody, true);

// 检查解析是否成功,以及video字段是否存在
if (json_last_error() !== JSON_ERROR_NONE || !isset($data['video'])) {
    die("Failed to parse JSON or video field missing");
}

// 提取视频编码字符串到变量
$videoContent = $data['video'];

优化:直接让cURL只返回响应体

如果你不需要HTTP头部,其实可以在cURL请求时设置选项,让它只返回响应体,省去拆分步骤:

// 初始化cURL
$ch = curl_init('你的API接口地址');

// 设置POST请求相关选项
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(['你的请求参数']));
// 关键:设置CURLOPT_HEADER为false,不返回头部
curl_setopt($ch, CURLOPT_HEADER, false);
// 设置返回结果不直接输出,而是存入变量
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// 执行请求并获取响应体
$jsonBody = curl_exec($ch);
curl_close($ch);

// 后续解析JSON提取video字段的代码和之前一致
$data = json_decode($jsonBody, true);
if (json_last_error() !== JSON_ERROR_NONE || !isset($data['video'])) {
    die("Failed to parse JSON or video field missing");
}
$videoContent = $data['video'];

这种方式更简洁规范,避免了手动拆分头部的潜在问题,也符合HTTP响应处理的标准流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 06:32:40