【发布时间】:2013-01-26 17:55:48
【问题描述】:
考虑以下代码:
<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 的 Inspect Element 工具中可识别为空文本节点(空格消失时此节点已删除)
从侧边栏脚本中删除所有不必要的空格(使其成为单行代码)并不能解决此问题。如果我只是将 require_once 行替换为组件的内容,则不会出现空格。所以不知道为什么 PHP 在 require 上添加它。有什么想法吗?
更新
这个仍然被证明是一个奇怪的。我现在同意require_once 似乎不是根本原因。我决定暂时忽略这个问题,并希望在我进一步研究后它会消失。唉,它仍然存在,所以我做了更多的调查。检查浏览器中的页面源代码确认有问题的代码确实作为一条完整的长行返回http://pastebin.com/dtp7QNbs - 任何标签之间没有空格或回车,但浏览器中出现空格 - 可在 Inspect 元素中识别工具作为每个<div class="component">之间的空行
这是否有助于进一步阐明问题?
【问题讨论】:
-
我非常怀疑
require_once是否添加了空格。您应该查看正在包含的文件,看看最后是否有任何内容。 -
将
require语句放在一行中:<?php require_once('/components/search.php'); require_once('/components/categories.php'); ?>并删除 PHP 结束标记后的所有尾随空格。 -
删除任何尾随 ?> 在您包含的每个文件的末尾
-
@njk 包含的内容与粘贴的内容完全相同 - 一直到
<!--blah-->(我想检查内容是否以某种方式添加了它)。 @BenM 做到了(见倒数第三行)。空白仍然存在 @MarkBakersearch.php和categories.php目前是纯 HTML,所以没有 ?> 要删除 -
那么这是一个样式问题,而不是
PHP问题。
标签: php whitespace require-once