简单的 HTML DOM 解析器 - 删除元素不起作用
Posted
技术标签:
【中文标题】简单的 HTML DOM 解析器 - 删除元素不起作用【英文标题】:Simple HTML DOM Parser - removing element not working 【发布时间】:2021-10-16 04:46:14 【问题描述】:我有以下 html 代码:
<div id="hero_techSpec">
<div class="hero_techSpecItem">
blubb
</div>
</div>
现在,我正在尝试使用“简单的 HTML DOM 解析器”删除内部 div 元素。
$document = HtmlDomParser::str_get_html("...some HTML code as string...");
$techSpec = $document->find("#hero_techSpec", 0);
echo $techSpec;
$techSpec->find(".hero_techSpecItem", 0)->outertext = '';
echo $techSpec;
$document->load($document->save());
echo $document->find("#hero_techSpec", 0); die;
在所有三个“echo”中,内部 div 仍然存在。我尝试遵循相关解决方案:Simple HTML Dom: How to remove elements?
但是,它似乎不适用于我的情况。您对如何解决该问题有任何想法/提示吗?谢谢!
【问题讨论】:
再次阅读引用的问题。一个答案建议使用outerhtml
而不是outertext
,另一个参考removeNode()
。其他需要考虑的可能是使用 php 的原生 HTML 解析库。看起来它具有您需要的所有功能。
非常感谢您的快速回复。 outertext 和 outerhtml 都不起作用。结果是完全一样的。使用 removeNode() 我收到未定义函数的错误。
您使用的是最新版本吗?该库最后一次发布是在 2019 年,同年给出了removeNode()
的答案。
我用的是1.9.1,好像是最新版本。 simplehtmldom.sourceforge.io/manual_api.htm中没有列出函数“removeNode”
【参考方案1】:
试试这样的:
$document->load($htmlString);
$techSpec = $document->find(".//div[@class='hero_techSpecItem']")[0];
$techSpec->outertext = "";
$document->load($document->save());
echo $document;
输出应该是:
<div id="hero_techSpec"> </div>
【讨论】:
以上是关于简单的 HTML DOM 解析器 - 删除元素不起作用的主要内容,如果未能解决你的问题,请参考以下文章