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



我正在使用 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 后,问题不复存在。

相关内容

  • 没有找到相关文章

最新更新