3
<?php
    libxml_use_internal_errors(true);
    $html = '
<html>
<body>
    <div>
        Message <b>bold</b>, <s>strike</s>
    </div>
    <div>
        <span class="how">
            <a href="link" title="text">Link</a>, <b> BOLD </b>
        </span>
    </div>
</body>
</html>
    ';
    $dom = new DOMDocument();
    $dom->preserveWhiteSpace = false;
    $dom->strictErrorChecking = false;
    $dom->recover = true;
    $dom->loadHTML($html);

    $xpath = new DOMXPath($dom);
    $messages = $xpath->query("//div");
    foreach($messages as $message)
    {
        echo $message->nodeValue;
    }

此代码返回“消息粗体,罢工链接,粗体”不带 html 标记...

我想输出以下代码:

Message <b>bold</b>, <s>strike</s>

<span class="how">
     <a href="link" title="text">Link</a>, <b> BOLD </b>
</span>

你能帮助我吗?

4

2 回答 2

0

我可以使用SimpleXML很快地做到这一点(如果你可以从 DOMDocument 和 DOMXPath 切换,可能你会选择我的解决方案):

$html = '
<html>
<body>
    <div>
        Message <b>bold</b>, <s>strike</s>
    </div>
    <div>
        <span class="how">
            <a href="link" title="text">Link</a>, <b> BOLD </b>
        </span>
    </div>
</body>
</html>
    ';
    $xml = simplexml_load_string($html);
    $arr = $xml->xpath('//div/*');
    foreach ($arr as $x) {
      echo $x->asXML();
    }
于 2011-05-30T15:27:07.307 回答
0
$dom = new DOMDocument;
foreach($messages as $message)
{
    echo $dom->saveHTML($message); 
}

利用saveHTML()

于 2017-04-30T18:51:25.607 回答