当前位置: 首页 > 知识库问答 >
问题:

删除 HTML 元素的多姆文档

商业
2023-03-14

这是我的代码:

$text = '<div class="cgus_post"><a href="?p=15055"><div class="imgbox"><img src="/cgmedia/default.gif"></div></a>
        <h2 id="post-15055">
        <a href="?p=15055" rel="bookmark" title="Permanent Link to Willie Nelson Celebrates 80th Birthday Stoned and Auditioning for Gandalf">Willie Nelson Celebrates 80th Birthday Stoned and Auditioning for Gandalf</a></h2>
        <p>This video pretty much sums up why Willie Nelson is fucking awesome. Willie decided to celebrate his 80th birthday by recording an ‘audition’ for Peter Jackson. &nbsp;Willie wants to take the reigns from Ian McKellan in The Hobbit 2, and decided to show off his acting skills and give some of his own wizardly advice. The result is &nbsp;hilarious. Watch …</p>
        <br class="clear">
        </div>';
$dom = new DomDocument();
$dom->loadHTML($text);
$classname = 'cgus_post';
$finder = new DomXPath($dom);
$nodes = $finder->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]");
foreach($nodes as $node){
    echo $node->nodeValue;  
}

我遇到的问题是,我在查询包含类< code>cgus_post的div时,返回的只是文本。我如何让它返回HTML元素?

共有1个答案

管梓
2023-03-14

下面是我经常使用的innerHTML函数:

function innerHTML(DOMNode $node, $trim = true, $decode = true) {
   $innerHTML = '';

   foreach ($node->childNodes as $inner_node) {
      $temp_container = new DOMDocument();
      $temp_container->appendChild($temp_container->importNode($inner_node, true));

      $innerHTML .= ($trim ? trim($temp_container->saveHTML()) : $temp_container->saveHTML());
   }

   return ($decode ? html_entity_decode($innerHTML) : $innerHTML);
}

然后你做:

$dom = new DOMDocument();
$dom->loadHTML($html);

echo htmlentities(innerHTML($dom->documentElement->childNodes->item(0)->firstChild));
 类似资料:
  • 我想删除html和tables标签和里面的任何东西(childs),最好的方法是什么? 我试着像这样遍历文档,但它不起作用,在Jsoup文档中,它说从DOM及其子对象中删除元素:

  • 问题内容: 我想使用简单HTML DOM删除文章中的所有图像,因此我可以轻松地为新闻自动收录器创建一小段文本,但是我还没有弄清楚如何使用它来删除元素。 基本上我会做 以HTML字符串形式获取内容 从内容中删除所有图像标签 将内容限制为x个字 输出。 有什么帮助吗? 问题答案: 没有用于删除元素的专用方法。您只需找到所有img元素,然后执行

  • 问题内容: 我是一个新手。有人可以告诉我如何使用原始Javascript(而不是jQuery)删除HTML元素。 当我单击“提交”按钮时,会在很短的时间内消失然后立即出现。单击按钮时,我想完全删除该元素。 问题答案: 发生的情况是正在提交表单,因此页面(带有其原始内容)正在刷新。您正在通过“提交”按钮处理事件。 如果要删除元素 而不 提交表单,请改为处理表单上的事件,然后从处理程序中返回: HTM

  • 问题内容: 我有一堆索引,我想从中删除这些索引中的元素。我无法做一个简单的s 序列,因为每次移除后元素都会移动。我该如何解决? 问题答案: 按降序对索引进行排序,然后将其一一删除。如果这样做,删除将不会影响以后要删除的任何索引。 如何对它们进行排序将取决于您用来存储索引的集合。如果是列表,则可以执行以下操作: 编辑 @aioobe找到了我找不到的助手。除了上述内容,您还可以使用

  • 问题内容: 我想从JSON中删除JSON元素或整行。 我有以下JSON字符串: 问题答案: 您可以使用splice从数组中删除元素。

  • 主要内容:删除元素/内容,jQuery remove() 方法,实例,jQuery empty() 方法,实例,过滤被删除的元素,实例通过 jQuery,可以很容易地删除已有的 HTML 元素。 删除元素/内容 如需删除元素和内容,一般可使用以下两个 jQuery 方法: remove() - 删除被选元素(及其子元素) empty() - 从被选元素中删除子元素 jQuery remove() 方法 jQuery remove() 方法删除被选元素及其子元素。 实例 $("#div1").re