2016-07-22 159 views
0

我想在特定网站中找到DOM中的元素。 DOM内部有一个名为“cufon”的标签。 假设URL为http://www.xyzw.com/ 我使用的代码如下:使用PHP遍历DOM

$dom = new DOMDocument(); 
@$dom->loadHTMLFile('http://www.xyzw.com/'); 
$teams = $dom->getElementById('cufon'); 

在这一点上$队VAR假设包含所有的DOM内的Cufón的元素,但它包含什么,如果我试图找到“div”元素它确实找到了一切。 问题是什么?

+0

cufon是否添加'javascript'? – atoms

+0

不,因为我看到它在页面中固定。 – user3601251

+0

有一个叫做cufon的标签,还有一个id = cufon的div? – RamRaider

回答

1

如果您像说的那样存在一个名为cufontext的TAG,那么尝试使用一个ID查找节点集合将只返回一个元素(ID需要是唯一的),因此您可能想要查找指定的所有元素标签名??

$dom = new DOMDocument(); 
$dom->loadHTMLFile('http://www.xyzw.com/'); 
$teams = $dom->getElementsByTagName('cufontext'); 
if($teams){ 
    foreach($teams as $team){ 
     /* do stuff */ 
    } 
} 

由于我们没有得到参与实际的URL我只好来测试像这样: -

/* random url - just happened to be open in browser just now */ 
$url='http://www.interparcel.com/'; 

/* the tag to search for */ 
$tag='div'; 


$dom = new DOMDocument(); 
$dom->loadHTMLFile($url); 
$teams = $dom->getElementsByTagName($tag); 

/* As pointed out by @Pieter it would have always returned true so additional check */ 
if($teams && $teams->length > 0){ 
    foreach($teams as $team){ 
     echo $team->nodeValue; 
    } 
} 

这将从远程URL吐出大量的内容 - 因此,如果您不能找到一个名为cufontext的标签我会建议确认是否有该名称的标签

+0

您的if语句是不必要的,因为'getElementsByTagName()'将始终返回一个'DOMNodeList'对象。 – Pieter

+0

我试过了,没有成功。 – user3601251

+0

当然有一个名为cufontext的标签。我和你一样尝试,仍然没有结果。不知道为什么PHP选择器无法找到cufontext元素。 – user3601251