Kai*_*Kai 3 php whitespace require-once
考虑以下代码:
<div id="sidebar">
<?php
require_once('/components/search.php');
require_once('/components/categories.php');
?>
</div>
Run Code Online (Sandbox Code Playgroud)
search.php本质category.php上是相同的结构 - 具有一些特定内容的 div 容器。这里没什么特别的,纯 HTML:
<div class="component">
<!-- blah -->
</div>
Run Code Online (Sandbox Code Playgroud)
然而,当用require_once(或require/include等) 插入时,PHP 在每个元素上方添加空格,将其向下推,可在 Chrome 的 Inspect Element 工具中识别为空文本节点(删除此节点时空格消失)
从侧边栏脚本中删除所有不必要的空格(使其成为单行代码)并不能解决问题。如果我只是用require_once组件的内容替换这些行,则不会出现空格。所以不确定为什么 PHP 在 require 上添加它。有任何想法吗?
更新
事实证明,这个仍然是一个奇怪的。我现在同意这require_once似乎不是根本原因。我决定暂时忽略这个问题,并希望在我进一步解决它之后它会消失。唉,它仍然存在,所以我做了更多调查。检查浏览器中的页面源代码,确认有问题的代码确实作为一个长的不间断行返回http://pastebin.com/dtp7QNbs - 任何标签之间没有空格或回车符,但浏览器中出现空格- 在检查元素工具中可识别为每个元素之间的空行<div class="component">
这是否有助于进一步阐明这个问题?
小智 5
我遇到了同样的问题,并验证了 Kai 的解决方案,将格式更改为 ANSI,但也发现“Encode in UTF-8 without BOM”也有效。这是新的 Notepad++ PHP 文件的默认格式,因此可以少一个转换步骤。
似乎一般不建议使用 UTF-8 中的字节顺序标记文件头。我验证了我安装的VS2010在保存PHP文件时添加了BOM。
下面的 stackoverflow 文章很好地解释了额外空格插入的位置。