考虑这个PHP代码:
$content = '<img />'."\n\n".'<img />';
$doc = new DomDocument();
$doc->loadHTML($content);
echo $doc->saveHTML();
输出(包括包装HTML / body等)给了我:
<img><img>
图像之间没有空格。
通话:
$doc->preserveWhiteSpace = true;
不会改变任何事情。
如何保留原始HTML中的空白区域?
答案 0 :(得分:1)
回答我自己的问题 - 它是旧版libxml2的错误行为:
https://bugs.php.net/bug.php?id=50278
通过传递LIBXML_HTML_NODEFDTD作为选项解决了此问题 加载文件时。从PHP开始,此常量可用 5.4.0当使用libxml2&gt; = 2.7.8时。请参阅http://3v4l.org/qs4TC。
我使用的共享服务器使用2.7.6所以不确定它对我有帮助,但我可以看看它们是否可以升级。希望这有助于其他人。
答案 1 :(得分:-1)
HTML中的空格已折叠。
您可以使用以下教程了解如何添加空白区域:
http://www.wikihow.com/Insert-Spaces-in-HTML
但在您的情况下,而不是使用&#34; \n\n
&#34;使用&#34; <br><br>
&#34;你会得到你的&#34;换行符#34;字符。
可以在此参考页面中找到所有HTML实体(在上面链接的教程中进行了解释):
https://dev.w3.org/html5/html-author/charref
请注意:您应该在页面上使用CSS作为视觉方面,因此如果您只想在图像之间使用间距,那么请使用边距而不是HTML标记。
答案 2 :(得分:-1)
您是否尝试过使用nl2br
?
$doc->loadHTML(nl2br($content));
nl2br - 在字符串
中的所有换行符之前插入HTML换行符