PHP中如何仅打印CURL代理返回给客户端的响应Body内的data内容
实现步骤
1 调整cURL基础配置(优先推荐)
你当前拿到的$response包含多余请求/响应头,是cURL默认配置导致的,在执行curl_exec()前添加以下配置项,可直接获取纯净响应体:
// 不返回响应头,仅返回响应主体 curl_setopt($request, CURLOPT_HEADER, false); // 要求curl_exec将结果以字符串返回,而非直接打印输出 curl_setopt($request, CURLOPT_RETURNTRANSFER, true); // 关闭调试日志输出,避免多余请求头信息混入返回结果 curl_setopt($request, CURLOPT_VERBOSE, false);
2 解析JSON提取data字段
调整配置后拿到的$response就是纯JSON格式的响应体,直接解析提取目标字段即可:
$response = curl_exec($request); // 将JSON解析为关联数组 $parseResult = json_decode($response, true); // 校验解析结果后输出data字段 if (json_last_error() === JSON_ERROR_NONE && isset($parseResult['data'])) { print_r($parseResult['data']); }
备用方案:无需修改cURL配置直接提取响应体
如果不方便调整现有cURL配置,可直接从返回内容中截取JSON部分再解析:
$response = curl_exec($request); // 定位JSON响应体的起始位置 $jsonStart = strpos($response, '{'); if ($jsonStart !== false) { $pureJson = substr($response, $jsonStart); $parseResult = json_decode($pureJson, true); if (json_last_error() === JSON_ERROR_NONE && isset($parseResult['data'])) { print_r($parseResult['data']); } }
内容的提问来源于stack exchange,提问作者Borja
相关产品推荐
相关产品推荐

