我想要检索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元素。
这样做的正确方法是什么?
提前致谢。
答案 0 :(得分:0)
.../*
将仅检索xpath查询中该文件div[5]
的直接后代的节点。 e.g
... 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()/
的简写,会返回范围。