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

如何使用PHP从指定JSON响应中提取图片URL?

用PHP从JSON响应中提取图片URL

这里有两种实用方法帮你提取目标图片URL,我会一步步拆解说明:

方法一:使用DOM解析器(推荐)

这种方法更健壮,能应对HTML结构的微小变动,比正则表达式靠谱得多,是处理HTML内容的标准做法。

步骤分解:

  • 先把JSON字符串解析成PHP可操作的数组/对象
  • 解码thumbnail_html里的HTML实体(比如把&lt;转成正常的<)
  • 用DOMDocument加载解码后的HTML,定位到img标签并提取src属性

代码示例:

// 你的JSON响应字符串
$jsonResponse = '{ "status": "active", "city": "depok", "name": "Alternatif Cibubur", "lat": -6.376057, "thumbnail_html": "\n\n\n\n\n\n&lt;div class=\"cam-thumb\"&gt;\n \n \n &lt;a href=\"/cam/248/alternatif-cibubur/\"&gt;\n &lt;img src=\"https://media.lewatmana.com/cam/tbicibubur/248/snapshot20180330_163142M-thumb.jpg\" class=\"cam-thumb-img\"&gt;\n &lt;/a&gt;\n \n \n\n &lt;div class=\"cam-thumb-info\"&gt;\n &lt;p class=\"cam-name\"&gt;&lt;a href=\"/cam/248/alternatif-cibubur..." }';

// 1. 解析JSON为关联数组
$data = json_decode($jsonResponse, true);

if (isset($data['thumbnail_html'])) {
    // 2. 解码HTML实体,还原正常HTML结构
    $html = htmlspecialchars_decode($data['thumbnail_html']);
    
    // 3. 初始化DOMDocument,抑制解析时的警告(兼容不规范HTML)
    $dom = new DOMDocument();
    libxml_use_internal_errors(true);
    $dom->loadHTML($html);
    libxml_clear_errors();
    
    // 4. 查找所有img标签,提取第一个的src属性
    $imgTags = $dom->getElementsByTagName('img');
    if ($imgTags->length > 0) {
        $imageUrl = $imgTags->item(0)->getAttribute('src');
        echo "提取到的图片URL:" . $imageUrl;
    } else {
        echo "未找到图片标签";
    }
} else {
    echo "JSON中不存在thumbnail_html字段";
}

方法二:使用正则表达式(仅适用于简单固定场景)

如果你的HTML结构完全不会变动,也可以用正则快速提取,但不推荐用于复杂或可能变化的HTML——只要HTML结构稍有调整,正则就可能失效。

代码示例:

$jsonResponse = '{ "status": "active", "city": "depok", "name": "Alternatif Cibubur", "lat": -6.376057, "thumbnail_html": "\n\n\n\n\n\n&lt;div class=\"cam-thumb\"&gt;\n \n \n &lt;a href=\"/cam/248/alternatif-cibubur/\"&gt;\n &lt;img src=\"https://media.lewatmana.com/cam/tbicibubur/248/snapshot20180330_163142M-thumb.jpg\" class=\"cam-thumb-img\"&gt;\n &lt;/a&gt;\n \n \n\n &lt;div class=\"cam-thumb-info\"&gt;\n &lt;p class=\"cam-name\"&gt;&lt;a href=\"/cam/248/alternatif-cibubur..." }';

$data = json_decode($jsonResponse, true);

if (isset($data['thumbnail_html'])) {
    $html = htmlspecialchars_decode($data['thumbnail_html']);
    // 匹配img标签内的src属性值
    preg_match('/<img[^>]+src="([^"]+)"/i', $html, $matches);
    if (!empty($matches[1])) {
        echo "提取到的图片URL:" . $matches[1];
    } else {
        echo "未匹配到图片URL";
    }
}

两种方法里,优先选DOM解析器,它能处理各种不规范的HTML,稳定性和扩展性都更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:14:12