2014-02-15 49 views
2

目前的結構看起來像在DomXPath刪除最後一個子

<div class="..."> 
    //more html 
    <div class="message-right"> 
     <div class="item1"> //more html </div> 
     <div class="item2"> //more html </div> 
     <div class="item3"> //more html </div> 
    </div> 
    //more html 
</div> 

我希望能夠拿到類的消息右「裏面的html內容,並刪除最後一個孩子。 (在這種情況下,「項目3」)

我應該留下的HTML代碼「物品1」和「ITEM2」

到目前爲止,我有

$dom = new DomDocument(); 
@$dom->loadHTML($html); 
$finder = new DomXPath($dom); 
$classname = "message-right"; 
$nodes = $finder->query("//*[contains(@class, '$classname')]"); 

//this is where I am stuck, need to remove the last child, 'item3'  

//this returns the html from 'message-right' 
$html = $nodes->item(0)->c14n() 
+0

我猜在第7行的標籤應該是關閉一個元素是什麼? –

+0

正確,只是改變了它。 – user3023421

回答

0

獲取最後一個子元素(XPath的意志讓這更容易)並刪除它。

$delete = $finder->query("./*[last()]", $nodes->item(0))->item(0); 
$delete->parentNode->removeChild($delete); 

根據你真的需要你可能想獲取(並隨後刪除)直接使用

//*[contains(@class, '$classname')]/*[last()]