DOMXPath - 仅选择几个项目

时间:2016-01-23 19:08:49

标签: domxpath

我们假设我们有这个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',因为我们要求&#39; p&#39;从第二个&#39; div&#39;节点

现在,我如何从&#39; div[2]&#39;中获取值?到&#39; div[4]&#39;并总结一下?

准确地说,我想知道如何从#到#&#34; 获取&#34;以及如何获得&#34;这个#, #,还有#和#&#34; 。所以有两个问题,针对两个不同的问题。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以使用DOMXPath选择元素范围:

  • 第一个问题 从#到#&#34; 使用 以下方法:

    // select nodes within specified range of positions
    $nodelist = $xpath->query('//div/div[position()>1 and position()<5]');
    
  • 关于第二个问题得到#34;这个#,#,还#和#&#34; 尝试以下(使用| union运算符):

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