我正在使用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.)时,才会出现此问题。之间没有文字。
答案 0 :(得分:1)
这似乎是libxml中的错误。该问题发生在2.9.7版本中,但是在使用PHP 7.3.8和libxml 2.9.9更新到XAMPP 3.2.4之后,该问题不再存在。