如何删除除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代码......
尝试:
$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)
| 归档时间: |
|
| 查看次数: |
773 次 |
| 最近记录: |