PHP DOMDocument的迷路结束标记

时间:2018-04-10 13:53:35

标签: php html xml dom domdocument

我使用PHP 7.1并发现DOMDocument lib出错。代码是

$body = '<figure>'
        . '<picture>'
            . '<source srcset="img.webp 100vw" type="image/webp">'
            . '<img src="img.jpg" alt="">'
        . '</picture>'
        . '</figure>';

$dom = new \DOMDocument();
if (@$dom->loadHTML(mb_convert_encoding($body, 'HTML-ENTITIES', 'UTF-8'), LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD))
    return $dom->saveHTML((new \DOMXPath($dom))->query('/')->item(0));

返回结果是

<figure>
    <picture>
        <source srcset="img.webp 100vw" type="image/webp">
            <img src="img.jpg" alt="">
        </source>
    </picture>
</figure>

如您所见,DOMDocument将</source>添加到关闭标记。但这是一个错误。如何解决?

P.S。我也使用了这个loadHTML技巧,但它没有帮助: loadHTML LIBXML_HTML_NOIMPLIED on an html fragment generates incorrect tags

0 个答案:

没有答案