删除除PHP中第一个以外的所有列表元素?

jil*_*ego 3 php

如何删除除PHP中第一个以外的所有li元素?

<div class="category">
   <ul class="products">
     <li>{nested child elements}</li>
     <li>{nested child elements}</li>
     <li>{nested child elements}</li>
   </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

上面的代码是由另一个脚本通过函数生成的.

结果应该是这样的:

<div class="category">
    <ul class="products">
        <li>{nested child elements}</li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

更新:抱歉,"类别"是一个类而不是ID.

为了偿还Yoshi,ul.产品有兄弟姐妹,但我没有将它们包含在我的帖子中.这会影响查询吗?

这是我的代码在添加Yoshi的代码时的样子:

class Myclass {
    function prin_html() {
        $content = get_code();
        $dom = new DOMDocument;
        $dom->loadXml($content);

        $xpath = new DOMXPath($dom);
        foreach ($xpath->query('//li[position()>1]') as $liNode) {
            $liNode->parentNode->removeChild($liNode); 
        }

        echo $dom->saveXml($dom->documentElement);    
    }
}
Run Code Online (Sandbox Code Playgroud)

它会打印未经过滤的html代码......

Yos*_*shi 9

尝试:

$dom = new DOMDocument;
$dom->loadHtml('<div id="category">
   <ul class="products">
     <li>{nested child elements}</li>
     <li>{nested child elements}</li>
     <li>{nested child elements}</li>
   </ul>
</div>');

$xpath = new DOMXPath($dom);
foreach ($xpath->query('//li[position()>1]') as $liNode) {
    $liNode->parentNode->removeChild($liNode);
}

$output = '';
foreach ($xpath->query('//body/*') as $child) {
    $output .= $dom->saveXml($child);
}
Run Code Online (Sandbox Code Playgroud)

输出:

<div id="category">
   <ul class="products">
     <li>{nested child elements}</li>


   </ul>
</div>
Run Code Online (Sandbox Code Playgroud)