DOMXPath - Select 只有几个项目

DOMXPath - Select only a few items

假设我们有这个 html 和以下 DOMXPath 代码:

<div>
    <div>
        <p>1</p>
    </div>
    <div>
        <p>2</p>
    </div>
    <div>
        <p>3</p>
    </div>
    <div>
        <p>4</p>
    </div>
    <div>
        <p>5</p>
    </div>
    <div>
        <p>6</p>
    </div>
</div>

$doc = new DOMDocument();
$doc->loadHtml($strhtml);
$doc->preserveWhiteSpace = false;

$xpath = new DOMXPath( $doc );

$nodelist = $xpath->query('//div/div[2]/p');

foreach( $nodelist as $node ) {
    $result = $node->nodeValue."\n";
}

echo $result;

显然,$result = '2',因为我们从第二个 'div' 节点请求 'p' 的值。

现在,我怎样才能获得例如从“div[2]”到“div[4]”的值并将它们相加?

准确地说,我想知道如何获得"from # to #"以及如何获得"this #, that #, also # and #".所以两个问题,针对两个不同的问题。

提前致谢。

您可以 select 元素范围 DOMXPath:

  • 至于第一个问题得到"from # to #"使用 以下方法:

    // select nodes within specified range of positions
    $nodelist = $xpath->query('//div/div[position()>1 and position()<5]');
    
  • 至于第二题得到"this #, that #, also # and #" 尝试以下操作(使用 | 联合运算符):

    // extracts the 2nd, 4th and 6th elements respectively
    $nodelist = $xpath->query('//div/div[2] | //div/div[4] | //div/div[6]);