如何使用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<img src="http://asdasd.video/wp-content/uploads/2018/01/rsz_nanatsu.jpg">"); $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<img src="http://asdasd.video/wp-content/uploads/2018/01/rsz_nanatsu.jpg">"); $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
相关产品推荐
相关产品推荐

