我正在使用 PHP DOM API 来创建一些标记。它工作正常,但在某些情况下<br>
标记后会出现换行符n
。我设法创建了一个 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 规范中定义的某种特殊行为吗?仅当<br>
标签是第一个或最后一个子标记时,问题才会发生,即中间没有文本。
这似乎是libxml中的一个错误。该问题出现在 2.9.7 版本中,但在使用 PHP 7.3.8 和 libxml 2.9.9 更新到 XAMPP 3.2.4 后,问题不复存在。