【问题标题】:convert part of dom element to string with html tags inside of them将部分 dom 元素转换为其中包含 html 标签的字符串
【发布时间】:2011-05-30 15:39:38
【问题描述】:

我需要将部分 DOM 元素转换为带有 h​​tml 标签的字符串。

我试过跟随,但它只打印一个没有标签的文本。

$dom = new DOMDocument();
$dom->loadHTMLFile('http://www.pixmania-pro.co.uk/gb/uk/08920684/art/packard-bell/easynote-tm89-gu-015uk.html');
$xpath = new DOMXPath($dom);
$elements=xpath->query('//table');

foreach($elements as $element)
echo $element->nodeValue;

我想要所有的标签和表格中的内容。有人能帮我吗。这将是一个很大的帮助。

谢谢。

【问题讨论】:

    标签: php html dom


    【解决方案1】:

    Current solution:

    foreach($elements as $element){
        echo $dom->saveHTML($element);
    }
    

    旧答案(php

    1. 创建 DomDocument 的新实例
    2. 克隆您希望保存为 HTML 的节点(包括所有子节点)
    3. 将克隆的节点导入到新的 DomDocument 实例并将其作为子节点追加
    4. 将新实例另存为 html

    所以是这样的:

    foreach($elements as $element){
        $newdoc = new DOMDocument();
        $cloned = $element->cloneNode(TRUE);
        $newdoc->appendChild($newdoc->importNode($cloned,TRUE));
        echo $newdoc->saveHTML();
    }
    

    【讨论】:

    • 哦,感谢 dev-null-dweller 这正是我所需要的。这节省了很多时间。再次感谢您。
    • tnx 伙计,你真的很有用:D
    • 请注意@dennis 在此下方的答案,以获得较新的 PHP 版本。
    • 只是在我的最后测试,它出现了 '$cloned = $element->cloneNode(TRUE);'如果您将 $element 项放在 importNode 方法中,而不是按原样放置 '$cloned' 项,则不需要行。
    【解决方案2】:

    使用 php 5.3.6 或更高版本,您可以使用DOMDocument::saveHTML 中的节点:

    foreach($elements as $element){
        echo $dom->saveHTML($element);
    }
    

    【讨论】:

      猜你喜欢
      • 2021-04-27
      • 2011-03-07
      • 2012-12-02
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 2014-08-30
      相关资源
      最近更新 更多