在DomXPath删除最后一个子
问题描述:
目前的结构看起来像在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()
答
获取最后一个子元素(XPath的意志让这更容易)并删除它。
$delete = $finder->query("./*[last()]", $nodes->item(0))->item(0);
$delete->parentNode->removeChild($delete);
根据你真的需要你可能想获取(并随后删除)直接使用
//*[contains(@class, '$classname')]/*[last()]
我猜在第7行的标签应该是关闭一个元素是什么? –
正确,只是改变了它。 – user3023421