Get DOM elements by tag name with DOMDocument::loa

2020-06-03 01:17发布

问题:

Sorry if this is reposted, but I can't wrap my mind around it and I've tried all the available documentation and examples I could find.

I am trying to get the first img element of a string containing HTML

PHP

$html = '<p><img src="http://placekitten.com/200/300" alt="" width="200" height="300" /></p>';
$dom = new DOMDocument;
$dom->loadHTML($html);
$imgs = $dom->getElementsByTagName('img');
var_dump($imgs);

This spits object(DOMNodeList)#57 (0) { } when it should find the one occurrence.

I've tried with XPath with no luck either.

回答1:

Use this:

$img = $dom->getElementsByTagName('img')->item(0);
echo $img->attributes->getNamedItem("src")->value;


回答2:

The correct answer has already been provided by @nickb but you can also do the same without having to use getNamedItem() in the second line of the code provided by @nickb, like this:

echo $img->attributes->src->value;

NOTE: I wanted to add the above code as a comment to @nickb's answer, but I need a minimum of 50 reputations to do that. If anyone can write the above code line as a comment to @nickb's answer, please let me know. I will then delete my answer.