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

如何使用DOMDocument输出图片?如何获取首个img标签的src?

DOMDocument 相关问题解答

问题1:如何使用DOMDocument输出图片?

要通过DOMDocument输出图片,核心是先定位到目标img元素,之后可以选择直接输出该元素的完整HTML,或者提取属性后自行构造img标签。给你举个实用的例子:

<?php
// 示例HTML内容
$content = '<img src="http://example.com/image.jpg" alt="示例图片">';
$dom = new DOMDocument();
// 用@屏蔽加载HTML时的非致命警告(比如DOCTYPE缺失)
@$dom->loadHTML($content);

// 获取页面中的第一个img元素
$imgElement = $dom->getElementsByTagName('img')->item(0);

if ($imgElement) {
    // 方式1:直接输出img元素的完整HTML代码
    echo $dom->saveHTML($imgElement);
    
    // 方式2:提取属性后手动构造img标签输出
    $src = $imgElement->getAttribute('src');
    $alt = $imgElement->getAttribute('alt');
    echo "<img src='{$src}' alt='{$alt}'>";
}
?>

问题2:如何获取第一个img标签的src(不使用循环)?

你的尝试代码逻辑顺序出问题啦!getElementsByTagName('img')返回的是DOMNodeList(节点列表对象),必须先调用item(0)拿到第一个img节点,再调用getAttribute('src')获取属性值,而不是反过来调用。

修正后的正确代码如下:

<?php
$content = html_entity_decode("asdasdasdasdasdasdasdasasdasdasdasdasdasdasd&lt;img src=&quot;http://asdasd.video/wp-content/uploads/2018/01/rsz_nanatsu.jpg&quot;&gt;");
$dom = new DOMDocument();
@$dom->loadHTML($content);

// 先取第一个img节点,再获取src属性
$firstImgSrc = $dom->getElementsByTagName('img')->item(0)->getAttribute('src');
echo $firstImgSrc;
?>

为了避免页面中没有img标签时报错,建议加个判断逻辑更稳妥:

<?php
$content = html_entity_decode("asdasdasdasdasdasdasdasasdasdasdasdasdasdasd&lt;img src=&quot;http://asdasd.video/wp-content/uploads/2018/01/rsz_nanatsu.jpg&quot;&gt;");
$dom = new DOMDocument();
@$dom->loadHTML($content);

$imgNodes = $dom->getElementsByTagName('img');
// 先判断是否存在img节点
if ($imgNodes->length > 0) {
    $firstImgSrc = $imgNodes->item(0)->getAttribute('src');
    echo $firstImgSrc;
} else {
    echo "页面中未找到img标签";
}
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:37:30