php setAttribute出错

时间:2015-10-22 13:05:30

标签: php html

我从第9行的php“未定义的方法DOMNodeList :: setAttribute()”中收到此错误消息。我试图在我的服务器上更改hmtl中图像的src,到目前为止这是我的代码:< / p>

<?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是图像的名称,hmtl是html行。

据我所知,从研究中我选择了一个特定的hmtl行,然后我将其加载到我的DOM变量中。然后我指定元素ie:“img”然后我可以通过使用setAttribute来编辑,但是这不起作用。我只想用“图片”的ID来改变这个img'的来源。

2 个答案:

答案 0 :(得分:2)

但是DOMNodeList没有那种方法。

getElementsByTagName是DOMDocument类的一部分。

你不需要施放任何东西,只需调用方法:

$links = $dom->getElementsByTagName('a');

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

顺便说一下,DOMElement是DOMNode的子类。如果您正在讨论DOMNodeList,那么可以使用DOMNodeList的item()方法,通过foreach循环访问这样的列表中的元素,可以是上面介绍的方法

$link_0 = $dom->getElementsByTagName('a')->item(0);

答案 1 :(得分:0)

getElementsByTagName返回节点列表。试试吧:

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