看起来我在这里缺少一些基础知识。对不起,如果问题看似微不足道,但我正在失去机智,寻找任何原因,现在几个小时都没有运气。
似乎在已包含的文件中包含多个文件会导致一些小问题 更改为页面布局。对于这个非常简单的示例,它只是稍微移动第一行(就像添加了空格字符符号),但对于我更复杂的网站,这个“缺陷”的行为就像换行符一样将整个网站放下一行(打破我网站的风格)。
这是一个例子。
我有简单的主要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”语句“require_once(”file2.php“);” - 修好了。 删除include_test.php的“require”语句“require(”file.php“);” - 修复。
结论(无论多么奇怪)似乎有两个需要语句(或者包括 - 因为我也检查过它 - 或者include_once,或者require_once)也在同一个文件中,也包括输出一些不可见,意外和不合理的字符。 现在是正确还是我错过了一些明显的东西?
答案 0 :(得分:1)
此类问题的原因不在代码中,这不涉及html或php代码中的换行符,也不涉及空格。由于所包含文件的类型,这种情况会发生。 特别是他们的编码为UTF-8 与BOM 。
当其中一个包含文件具有BOM签名时,它可能会产生如此意外且难以解释的空白或破解字符,以及为什么我不确切地知道(看起来它被浏览器随机处理)。所以我打开并保存所有文件(file.php,file2.php,file3.php)为UTF-8(没有BOM),这解决了我的问题。
关于BOM: http://en.wikipedia.org/wiki/Byte_order_mark
关于这个主题 - What's different between UTF-8 and UTF-8 without BOM? - 我将此BOM签名视为不必要(因为我不使用希伯来字符编码或此类奇特的东西),并且在我的情况下有害。
给所有读者带来美好的一天! :) Ĵ