首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用DOMDocument实现从HTML文档中按类抽取

用DOMDocument实现从HTML文档中按类抽取
EN

Stack Overflow用户
提问于 2011-02-26 03:40:34
回答 3查看 8K关注 0票数 5

在DOMDocument类中,有按id和按标记名(getElementById & getElementsByTagName)获取元素的方法,但不能按类获取元素。有没有办法做到这一点?

例如,我如何从下面的标记中选择div?

代码语言:javascript
复制
<html>
...
<body>
...
<div class="foo">
...
</div>
...
</body>
</html>
EN

回答 3

Stack Overflow用户

发布于 2011-02-26 03:48:21

简单的答案是使用xpath:

代码语言:javascript
复制
$dom = new DomDocument();
$dom->loadHtml($html);
$xpath = new DomXpath($dom);
$div = $xpath->query('//*[@class="foo"]')->item(0);

但这不接受空格。

代码语言:javascript
复制
//*[contains(concat(' ', normalize-space(@class), ' '), ' class ')
票数 13
EN

Stack Overflow用户

发布于 2011-02-26 03:50:48

代码语言:javascript
复制
$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>";
票数 2
EN

Stack Overflow用户

发布于 2014-12-08 17:05:25

除了ircmaxell的答案之外,如果您需要按空格分隔的类进行选择:

代码语言:javascript
复制
$dom = new DomDocument();
$dom->loadHtml($html);
$xpath = new DomXpath($dom);
$classname='foo';
$div = $xpath->query("//table[contains(@class, '$classname')]")->item(0);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5121833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档