2012-07-18 5 views
1

DOMDocument 함수 getElementsByTagName()을 사용하려고하지만 빈 객체를 계속 반환합니다. 다음 코드를 사용하고 있습니다 :DOMDocument getElementsByTagName이 작동하지 않습니다.

// 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에서 발생했는지, 이전에는 발생하지 않았는지 확인하십시오. –

답변

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" 
관련 문제