保留DomDocument中图像之间的换行符

时间:2016-04-19 04:47:54

标签: php whitespace domdocument

考虑这个PHP代码:

$content = '<img />'."\n\n".'<img />';
$doc = new DomDocument();
$doc->loadHTML($content);
echo $doc->saveHTML();

输出(包括包装HTML / body等)给了我:

<img><img>

图像之间没有空格。

通话:

$doc->preserveWhiteSpace = true;

不会改变任何事情。

如何保留原始HTML中的空白区域?

3 个答案:

答案 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标记。

https://developer.mozilla.org/en/docs/Web/CSS/margin

答案 2 :(得分:-1)

您是否尝试过使用nl2br

$doc->loadHTML(nl2br($content));

  

nl2br - 在字符串

中的所有换行符之前插入HTML换行符
相关问题