PHP XPath外卡搜索

时间:2013-07-30 21:14:57

标签: php html xpath

我想要检索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元素。

这样做的正确方法是什么?

提前致谢。

1 个答案:

答案 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()/的简写,会返回范围。