简单的HTML Dom:如何删除元素?

2022-08-30 12:36:11

我想使用Simple HTML DOM来删除文章中的所有图像,这样我就可以很容易地为新闻自动收报机创建一小段文本,但我还没有弄清楚如何删除它的元素。

基本上我会做的

  1. 以 HTML 字符串形式获取内容
  2. 从内容中删除所有图像标记
  3. 将内容限制为 x 个字
  4. 输出。

有什么帮助吗?


答案 1

没有用于删除元素的专用方法。你只需找到所有的img元素,然后做

$e->outertext = '';

答案 2

当您仅删除外部文本时,您将删除HTML内容本身,但是如果您对相同的元素执行另一个查找,它将出现在结果中。原因是简单的HTML DOM对象仍然具有元素的内部结构,只是没有其实际内容。为了真正删除元素,您需要做的就是简单地将HTML作为字符串重新加载到同一变量中。这样,在没有删除内容的情况下将重新创建对象,并且在没有它的情况下将构建简单的HTML DOM对象。

下面是一个示例函数:

public function removeNode($selector)
{
    foreach ($this->find($selector) as $node)
    {
        $node->outertext = '';
    }

    $this->load($this->save());        
}

把这个函数放在simple_html_dom类中,你就好了。


推荐