【发布时间】:2014-01-16 01:43:46
【问题描述】:
看来我在这里遗漏了一些基础知识。抱歉,如果问题可能看起来微不足道,但我正在失去理智寻找任何原因,现在几个小时都没有运气。
似乎在已包含的文件中包含多个文件会导致一些小问题 更改页面布局。 对于这个非常简单的示例,它只是将第一行移动了一点(就像添加了一个空格字符符号),但是对于我更复杂的网站,这个“缺陷”的行为就像一个换行符,它将整个网站排成一行(打破我网站的风格)。
这是一个例子。
我有超级简单的主 PHP file("include_test.php"):
<?php require ("./file.php");?>
<!doctype html>
<html>
<head></head>
<body>
This is a first line of html body.<br>
This is a second line of html body.<br>
This is a third...<br>
</body>
</html>
然后需要的文件——“file.php”,看起来像这样:
<?php
require_once("file2.php");
require_once("file3.php");
?>
然后是-file2.php 和file3.php 上面的两个必需文件。这里似乎无关紧要,因为我可以将任何内容放在那里而无需更改,但无论哪种方式,它们都是如此超级简单的 php 文件 -
file2.php:
<?php
function alfa(){
return 1;
}
?>
file3.php:
<?php
function omega(){
return 1;
}
?>
现在请看 main "include_test.php: here: 的输出:
http://destadesign.com/tag/include_test.php
注意到正文内容开始的轻微变化了吗? 是什么原因造成的?
注意:我已经确定删除任何“require”语句可以解决此问题。 删除 file.php "require_once("file3.php");" 的第二个 "require" 语句- 固定的。 删除 file.php "require_once("file2.php");" 的第一个 "require" 语句- 固定的。 删除 include_test.php "require("file.php"); 的 "require" 语句- 已修复。
结论(无论多么奇怪)似乎在同一个文件中的两个 require 语句(或 include - 我也检查过 - 或 include_once 或 require_once)输出一些不可见、意外和不合理的字符。 现在是正确的还是我在这里遗漏了一些明显的东西?
【问题讨论】:
-
重要的是生成的 HTML 输出。包含和不包含这些内容会是什么样子?
-
也不会生成 PHP 错误(包括通知),错误报告设置为 E_ALL。
-
包括:destadesign.com/tag/include_test.php - 添加了一个空字符。在 file.php 中没有包含:destadesign.com/tag/include_test2.php - 正确的 HTML 输出。
-
您所包含的文件之一的末尾可能有换行符。完全删除
?>以避免这种情况。 (PHP 会自动将文件的结尾解释为?>)。 -
Pekka,感谢您的帮助和参与。这很有指导意义。我已经删除了所有 php 代码结束标记(“?>”),但它并没有解决问题。我还使用 TextWrangler 工具从代码中删除了所有断行(只是为了确保绝对没有断行)。这也没有帮助。但是我确实找到了这个问题的原因和解决我的问题的方法 - 我会把它写成这个问题的答案,所以它会更清楚地为其他人阅读。