使用PHP按类名删除列表项
当子链接具有类“hide”时,我试图删除父列表项。如果父级“li”中的子级具有“hide”类的名称,我如何获取类名,然后删除父级“li”使用PHP按类名删除列表项,php,domdocument,Php,Domdocument,当子链接具有类“hide”时,我试图删除父列表项。如果父级“li”中的子级具有“hide”类的名称,我如何获取类名,然后删除父级“li” $html = '<ul> <li><a href="/first">First Item</a></li> <li><a class="hide" href="/first">First Item</a></li> </ul&g
$html = '<ul>
<li><a href="/first">First Item</a></li>
<li><a class="hide" href="/first">First Item</a></li>
</ul>';
$dom = new DOMDocument;
@$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('li') as $tag){
// Check if there is a hide and remove the parent list item
}
$html='
';
$dom=新的DOMDocument;
@$dom->loadHTML($html);
foreach($dom->getElementsByTagName('li')作为$tag){
//检查是否存在隐藏并删除父列表项
}
您可以与DOMDocument
一起使用。请尝试以下操作:
<?php
$html = '<ul>
<li><a href="/first">First Item</a></li>
<li><a class="hide" href="/first">Second Item</a></li>
</ul>';
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$elements = $xpath->query('//a[@class="hide"]/..');
foreach ($elements as $el) {
$el->parentNode->removeChild($el);
}
echo $doc->saveHTML();
据我所知,您需要根据内部a元素的类名从ul中删除第一个li;这里有一个解决方案
$html = '<ul>
<li><a href="/first">First Item</a></li>
<li><a class="hide" href="/first">First Item</a></li>
</ul>';
$doc = new DOMDocument;
@$doc->loadHTML($html);
$xpath = new DOMXpath($doc);
$elements = $xpath->query("//ul/li/a[@class='hide']/parent::*/preceding-sibling::*[1]");
foreach($elements as $node) {
$node->parentNode->removeChild($node);
};
echo $doc->saveHTML();
$html='
';
$doc=新文档;
@$doc->loadHTML($html);
$xpath=新的DOMXpath($doc);
$elements=$xpath->query(//ul/li/a[@class='hide']/parent::*/前面的同级::*[1]”);
foreach($元素作为$node){
$node->parentNode->removeChild($node);
};
echo$doc->saveHTML();
$html = '<ul>
<li><a href="/first">First Item</a></li>
<li><a class="hide" href="/first">First Item</a></li>
</ul>';
$doc = new DOMDocument;
@$doc->loadHTML($html);
$xpath = new DOMXpath($doc);
$elements = $xpath->query("//ul/li/a[@class='hide']/parent::*/preceding-sibling::*[1]");
foreach($elements as $node) {
$node->parentNode->removeChild($node);
};
echo $doc->saveHTML();