删除特定 class 个 domdocument
Remove specific class domdocument
我在 dom 文档中有这个:
<div><span class="hello"></span><div>
我想删除所有 class 的跨度。所以我尝试了:
$xpath = new DOMXPath($doc);
$elements = $xpath->query('//span[@class="hello"]/..');
foreach ($elements as $el) {
$el->parentNode->removeChild($el);
}
但这也会删除父元素(div 元素)。我怎样才能仅 删除 span 元素?
XPath 选择器末尾的 /.. 正在选择父元素,而不是 <span>
本身 - ..
意味着工作一个级别备份树,与在目录路径中相同。所以在你的循环中,你说 parentNode->removeChild
,你实际上是在删除 div,因为 $el
已经是跨度的父元素。
如果您只是从选择器的末尾删除 /..
,代码应该可以正常工作。
$xpath = new DOMXPath($doc);
$elements = $xpath->query('//span[@class="hello"]');
foreach ($elements as $el) {
$el->parentNode->removeChild($el);
}
我在 dom 文档中有这个:
<div><span class="hello"></span><div>
我想删除所有 class 的跨度。所以我尝试了:
$xpath = new DOMXPath($doc);
$elements = $xpath->query('//span[@class="hello"]/..');
foreach ($elements as $el) {
$el->parentNode->removeChild($el);
}
但这也会删除父元素(div 元素)。我怎样才能仅 删除 span 元素?
XPath 选择器末尾的 /.. 正在选择父元素,而不是 <span>
本身 - ..
意味着工作一个级别备份树,与在目录路径中相同。所以在你的循环中,你说 parentNode->removeChild
,你实际上是在删除 div,因为 $el
已经是跨度的父元素。
如果您只是从选择器的末尾删除 /..
,代码应该可以正常工作。
$xpath = new DOMXPath($doc);
$elements = $xpath->query('//span[@class="hello"]');
foreach ($elements as $el) {
$el->parentNode->removeChild($el);
}