换行符出现在DOMDocument中的<br>标记后saveHTML()

时间:2019-07-24 06:40:34

标签: php html dom domdocument

我正在使用PHP DOM API创建一些标记。它可以正常工作,但是在某些情况下,\n标记后会出现换行符<br>。我设法创建了一个reprex

$document = new DOMDocument();
$document->loadHTML('<div>text<br></div>');
$element = $document->getElementsByTagName('div')->item(0);

echo $document->saveHTML($element); // newline appears after <br>

由于某些原因,saveHTML()不会返回最初加载的相同标记。正如我在repl中所演示的那样,在<br>标签周围添加文本或使用saveXML()可以正常工作。

DOM spec中是否定义了某些特殊行为?仅当<br>标签是第一个或最后一个孩子(即I.E.)时,才会出现此问题。之间没有文字。

1 个答案:

答案 0 :(得分:1)

这似乎是libxml中的错误。该问题发生在2.9.7版本中,但是在使用PHP 7.3.8和libxml 2.9.9更新到XAMPP 3.2.4之后,该问题不再存在。