【问题标题】:Remove specific class domdocument删除特定类 domdocument
【发布时间】:2019-01-23 13:05:10
【问题描述】:

我在 dom 文档中有这个:

<div><span class="hello"></span><div>

我想删除该类的所有跨度。所以我尝试了:

$xpath = new DOMXPath($doc);
$elements = $xpath->query('//span[@class="hello"]/..');

foreach ($elements as $el) {
  $el->parentNode->removeChild($el);
}

但这也会删除父元素(div 元素)。如何删除 span 元素?

【问题讨论】:

  • 选择器末尾的 /.. 选择的是父 div,而不是跨度
  • @iainn 你能用工作解决方案发布答案​​吗?谢谢。

标签: php domdocument


【解决方案1】:

XPath 选择器末尾的 /.. 选择的是父元素,而不是 &lt;span&gt; 本身 - .. 意味着在树的上一级工作,与在目录路径中。所以在你的循环中,你说parentNode-&gt;removeChild,你实际上是在删除div,因为$el已经是span的父元素。

如果您只是从选择器末尾删除/..,代码应该可以按预期工作。

$xpath = new DOMXPath($doc);
$elements = $xpath->query('//span[@class="hello"]');

foreach ($elements as $el) {
    $el->parentNode->removeChild($el);
}

完整示例:https://3v4l.org/o4dRv

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    相关资源
    最近更新 更多