在DOMDocument类中,有按id和按标记名(getElementById & getElementsByTagName)获取元素的方法,但不能按类获取元素。有没有办法做到这一点?
例如,我如何从下面的标记中选择div?
<html>
...
<body>
...
<div class="foo">
...
</div>
...
</body>
</html>发布于 2011-02-26 03:48:21
简单的答案是使用xpath:
$dom = new DomDocument();
$dom->loadHtml($html);
$xpath = new DomXpath($dom);
$div = $xpath->query('//*[@class="foo"]')->item(0);但这不接受空格。
//*[contains(concat(' ', normalize-space(@class), ' '), ' class ')发布于 2011-02-26 03:50:48
$html = '<html><body><div class="foo">Test</div><div class="foo">ABC</div><div class="foo">Exit</div><div class="bar"></div></body></html>';
$dom = new DOMDocument();
@$dom->loadHtml($html);
$xpath = new DOMXPath($dom);
$allClass = $xpath->query("//@class");
$allClassBar = $xpath->query("//*[@class='bar']");
echo "There are " . $allClass->length . " with a class attribute<br>";
echo "There are " . $allClassBar->length . " with a class attribute of 'bar'<br>";发布于 2014-12-08 17:05:25
除了ircmaxell的答案之外,如果您需要按空格分隔的类进行选择:
$dom = new DomDocument();
$dom->loadHtml($html);
$xpath = new DomXpath($dom);
$classname='foo';
$div = $xpath->query("//table[contains(@class, '$classname')]")->item(0);https://stackoverflow.com/questions/5121833
复制相似问题