0

我正在查看以下stackoverflow问题:Getting Dom Elements By Class name,它引用了我可以使用此代码获取类名:

$text = '<html><body><div class="someclass someclass2">sometext</div></body></html>';
$dom = new DomDocument();
$dom->loadHTML($text);
$classname = 'someclass someclass2';
$finder = new DomXPath($dom);
$nodes = $finder->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]");
print "<pre>".print_r($nodes,true)."</pre>";

我也尝试改成$classname一堂课:

$classname = 'someclass2';

我得到空的结果。知道为什么吗?

4

1 回答 1

0

您必须遍历结果,因为print_r()不会打印 a 的成员DOMNodeList。像这样:

$text = '<html><body><div class="someclass someclass2">sometext</div></body></html>';
$dom = new DomDocument();
$dom->loadHTML($text);
$classname = 'someclass someclass2';
$finder = new DomXPath($dom);
$nodes = $finder->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]");

// iterate through the result. print_r will not suffer
foreach($nodes as $node) {
    echo $node->nodeValue;
}
于 2013-08-26T22:21:47.047 回答