我想检索HTML中div元素中的所有内容。我使用PHP和XPath来完成这项工作
$doc = new DOMDocument();
$doc->loadHTMLFile($uri);
$xpath= new DOMXPath($doc);
$text_content =
$xpath->query("/html/body/div[5]/div[1]/div[1]/div[1]/div[2]/div[5]/*");
我使用通配符"*"来检索这个div(div[5])下的所有元素(普通文本、div、img、p等),但当我打印$text_content时,我发现它只存储了所有div元素。
正确的方法是什么?
提前谢谢。
.../*
将只在xpath查询中检索作为该文件div[5]
的直接子代的节点。例如
... rest of document ...
<div id="5">
<p>hello <span>there</span></p>
</div>
在这个简化的示例中,您的查询将检索<p>
,因为它是<div>
的直接后裔。它不会带回<span>
,因为它是<div>
的孙子
要获得所有后代,无论级别如何,您都需要
.../div[5]//*
^^---note doubled slashes
//
是/descendant-or-self::node()/
的短手,将返回跨度。