考虑下面的代码:PHP增加了额外的空格上需要
<div id="sidebar">
<?php
require_once('/components/search.php');
require_once('/components/categories.php');
?>
</div>
search.php
和category.php
在本质上是相同的结构 - 与一些特定内容的div容器。这里没有什么特别,纯HTML:
<div class="component">
<!-- blah -->
</div>
然而,当require_once
(或require
/include
等)插入,PHP将每个元素上方的空白,将其向下推,识别为在Chrome的检查元素工具的空白文本节点(删除此节点时,空白字符消失)
从侧边栏脚本中删除所有不必要的空格(使其成为一行代码)不会修复它。如果我只是将require_once
行替换为组件的内容,则不显示空白。所以不知道为什么PHP会根据需要添加它。有任何想法吗?
更新
这一个仍然被证明是一个奇怪的一个。我现在同意require_once
似乎不是这样的根本原因。我决定暂时忽略这个问题,并希望在我进一步研究之后它会消失。唉,它仍然存在,所以我做了更多的调查。在浏览器中检查页面源代码确认所涉及的代码确实是作为单一的长实线返回http://pastebin.com/dtp7QNbs - 任何标记之间没有空白或回车,但空间出现在浏览器中 - 在检查元素工具中可识别为<div class="component">
这是否有助于揭示这个问题?
之前,我高度怀疑'require_once'被添加空格。您应该查看正在包含的文件,并查看最后是否有任何结尾。 – Kermit 2013-02-11 15:37:52
将'require'语句放在一行中:'<?php require_once('/ components/search.php'); require_once( '/部件/ categories.php'); ?>并在关闭PHP标记后删除任何尾随空格。 – BenM 2013-02-11 15:38:02
删除每个包含文件末尾的?> – 2013-02-11 15:38:03