使用PHP遍历DOM


Traversing a DOM with PHP

我想在DOM中的特定站点中找到一个元素。在DOM中有一个名为"cufon"的标记。假设url是http://www.xyzw.com/我使用的代码如下:

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

在这一点上,$teamsvar假设包含DOM中的所有cufon元素,但它什么也不包含,如果我试图查找"div"元素,它确实找到了所有元素。问题出在哪里?

如果如您所说,有一个名为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的标签,我建议你确认有这个名称的标签