我想在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
的标签,我建议你确认有这个名称的标签