我使用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