2012-07-18 78 views
1

我试图使用DOMDocument函数getElementsByTagName(),但它一直返回一个空对象。我正在使用以下代码:DOMDocument getElementsByTagName not working

// Create some HTML 
$output = ' 
<html> 
    <body> 
     <a href="foo">Bar</a> 
    </body> 
</html>'; 

// Load the HTML 
$dom = new DOMDocument; 
$dom->loadHTML($output); 

// Find all links (a tags) 
$links = $dom->getElementsByTagName('a'); 

var_dump($links); // object(DOMNodeList)#31 (0) { } - empty object 

我错过了什么?看看文档,它看起来像我正确使用该功能。

+0

$ dom其实就是你的HTML文档?你确定'错误'发生在getElementsByTagName而不是之前? – 2012-07-18 13:31:23

回答

6

var_dump只是说你有一个DOMNodeList对象。遍历列表和you'll see它的存在:

foreach($links as $a) { 
    echo $a->nodeName . ' ' . $a->nodeValue; 
} 

这将输出:

a Bar 

因为它是一个<a>标签,并对其内容的Bar

0

不知道你是什么期望从var_dump,但元素包含在节点列表,你可以看到:

var_dump($links->item(0)); 
//object(DOMElement)#3 (0) {} 
var_dump($links->item(0)->getAttribute("href")); 
//string(3) "foo"