我想获取tds中的值。我可以通过getElementsByTagName来实现它,但我无法通过使用getElementById来管理它。
HTML可能如下所示:
<table id="myid">
<tr>
<td>value1</td>
<td>value2</td>
</tr>
<tr>
<td>value1</td>
<td>value2</td>
</tr>
</table>
用于访问值的php是:
<?PHP
$dom = new DOMDocument();
$dom->loadHTMLfile('http://remoteDomain/thispage.html');
$table=$dom->getElementById('myid');
foreach($table->getElementsByTagName('tr') as $key =>$tr){
$tr->getElementsByTagName('td')->item(0)->nodeValue;
}
?>
修改
我收到了错误: 致命错误:在...中的非对象上调用成员函数getElementsByTagName()
EDIT2
Php信息:
启用DOM / XML
DOM / XML API Version 20031129
libxml版本2.7.3
操作系统:Windows
答案 0 :(得分:2)
问题是getElementById
需要DOCTYPE。如果你添加
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
在文件的开头,它应该工作(你还应该添加html和body标签)。
修改:您还需要在加载HTML文件之前添加$dom->validateOnParse = true;
。
这显然是DomDocument
课程的“功能”,请参阅http://php.net/manual/en/domdocument.getelementbyid.php(评论)
答案 1 :(得分:1)
您的id属性需要引号
<table id="myid">
答案 2 :(得分:0)
getElementById
顾名思义,只有在您定位的元素实际上具有id
时才有效。
答案 3 :(得分:0)
据我了解,您希望在foreach getElementById中使用,并且您的代码正在运行。
正如可以看到的那样,名称getElement[S]ByTagName
和getElementById
之间存在差异。
id 的定义可以说是页面中元素的唯一标识符,因此只允许一个 id (唯一)值保留在单个页面上并且此值不能分配给另一个元素id。如果你有多个具有相同id值的元素,那就错了(我认为是HTML 4或XHTML 1.0)。
您使用的方式看起来有效。
修改强>
在这种情况下,您可能在此处有一个anwser:Same problem already solved