PHP:xPath,将所有<p>标记放在div中

时间:2015-12-01 10:58:25

标签: php xpath

我正在尝试访问特定div中的所有p标签。我的xPath查询看起来像这样,理论上应返回所有p标签,但它只返回第一个。有谁知道我怎么可能返回所有p标签?

//*[@id="shopMain"]/div/div/p

结构如下:

<div id="shopMain">
 <div id="px10">
  <div id="pB30">
   <p>
    <span>Text I need</span>
   </p>
   <p>
    <span>Text I need</span>
   </p>
 </div>
</div>
</div>

1 个答案:

答案 0 :(得分:1)

这对我有用..

    define('BR','<br />');
    $strhtml='<div id="shopMain">
                 <div id="px10">
                  <div id="pB30">
                   <p>
                    <span>Text I need</span>
                   </p>
                   <p>
                    <span>Text I need</span>
                   </p>
                 </div>
                </div>
            </div>';

    $dom=new DOMDocument;
    $dom->loadHTML( $strhtml );

    $xpath=new DOMXPath( $dom );
    $col=$xpath->query('//div[@id="shopMain"]/div/div/p');
    if( $col ){
        foreach( $col as $node ) echo $node->tagName.' '.$node->nodeValue.BR;
    }

    /* 
    output
    ------
    p Text I need
    p Text I need 
    */