PHP未定义方法DOMNodeList::setAttribute()


PHP undefined method DOMNodeList::setAttribute()

我从PHP: "undefined method DOMNodeList::setAttribute()" from line 9得到这个错误消息。我试图改变图像的src在我的HTML在我的服务器,到目前为止,这是我的代码:

<?php
if (isset($_POST['id']) && isset($_POST['name'])) 
{
   $id = $_POST['id'];
   $name = $_POST['name'];
   $html = $_POST['html'];
   $dom = new domDocument;
   $dom->loadHTML($html);
   $node = $dom->getElementsByTagName( 'img' ); 
   $node ->setAttribute('src', 'images/' . $name);//line 9
   echo $dom->saveHTML();
} 
echo 'error';
exit;
//html
<div><img id="picture" src=""></div>

变量'id'是特定HTML行的HTML id, name是图像的名称,HTML是HTML的行。

据我所知,我选择了一行特定的HTML,然后加载到我的DOM变量中。然后我指定元素:"img"然后我可以通过使用setAttribute进行编辑,但是这不起作用。我只想更改ID为"picture"的图片的来源

但是DOMNodeList没有这个方法。

getElementsByTagName是DOMDocument类的一部分。

不需要强制类型转换,只需调用方法:

$links = $dom->getElementsByTagName('a');
foreach ($links as $link) {
    $spans = $link->getElementsByTagName('span');
}

顺便说一下,DOMElement是DOMNode的子类。如果您谈论的是DOMNodeList,那么访问这样一个列表中的元素可以通过上面提供的方法(带有foreach循环)或使用DOMNodeList

的item()方法来完成。
$link_0 = $dom->getElementsByTagName('a')->item(0);

getElementsByTagName返回节点列表。试着输入:

$nodes = $dom->getElementsByTagName('img');
foreach ($nodes as $node) {
    $node->setAttribute('src', 'images/' . $name);
}