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

如何将WebService返回的带var visual的字符串转为JSON并在PHP中遍历photos节点?

在PHP中将带变量声明的JSON格式字符串转换为可遍历的数组

我从WebService接收到以下格式的数据(包含var visual变量):

var visual = {
    "status": "ok",
    "cached": "1",
    "cache_time": "1674481162",
    "photos": [{
        "photo_id": "81517195",
        "title": "title 1"
    }, {
        "photo_id": "79383391",
        "title": "Title 2"
    }]
}

我判断这并非有效JSON,而是带变量声明的字符串形式。请问如何将其转换为可处理的格式,以便在PHP中遍历每个photos节点?

处理步骤:

  • 清理字符串
    先移除字符串开头的var visual = 以及可能存在的末尾分号,提取纯JSON内容。用正则替换是最稳妥的方式:
    $response = 'var visual = {"status": "ok", ...};'; // 原始响应字符串
    $cleanedJson = preg_replace('/^var visual = |;$/', '', $response);
    
  • 解析为PHP结构
    使用json_decode将清理后的JSON转为关联数组(第二个参数设为true),方便后续遍历:
    $data = json_decode($cleanedJson, true);
    
  • 遍历photos节点
    验证数据有效性后,直接循环photos数组即可:
    if (isset($data['photos']) && is_array($data['photos'])) {
        foreach ($data['photos'] as $photo) {
            // 处理每个照片数据,比如输出ID和标题
            echo "照片ID:{$photo['photo_id']},标题:{$photo['title']}<br>";
        }
    }
    

额外提示:

  • 若json_decode返回null,说明JSON格式有问题,可调用json_last_error_msg()查看具体错误原因。
  • 若WebService提供参数支持,尽量直接请求纯JSON格式响应,减少字符串处理的麻烦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:35:20