2016-01-23 55 views
0

比方說,我們有這個HTML和下面DOMXPath代碼: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',因爲我們要求「P」從第二「DIV」節點的值。

現在,我怎樣才能得到從'div[2]'到'div[4]'的值,並將它們相加?

準確地說,我想知道如何得到「從#到#」,以及如何得到「這個#,即#,#也和#」。所以有兩個問題,兩個不同的問題。

在此先感謝。

回答

0

您可以選擇元素的範圍與DOMXPath

  • 對於第一個問題得到 「從#到#」使用 以下方法:

    // select nodes within specified range of positions 
    $nodelist = $xpath->query('//div/div[position()>1 and position()<5]'); 
    
  • 至於第二個問題得到「這#,那#,還#和#」 請嘗試以下(含|聯合運營商):

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

完美的作品。謝謝,@RomanPerekhrest。 – Karls

+0

歡迎您! – RomanPerekhrest