我一直在使用PHP自定义CMS,直到最近才遇到任何问题。在测试时,我注意到字符串
已经开始出现在索引页面的顶部。在整个代码中使用一些die语句进行测试,似乎输出介于文件include。
档案A
<?php
if (!defined('IN_CMS'))
{
exit;
}
require(INCLUDE_PATH . '/pages/homepage/main.php');
?>
文件B(包含文件)
<?php
if (!defined('IN_CMS'))
{
exit;
}
$db->sql_query("SELECT * FROM `" . DB_PREFIX . "categories` active = 1");
$cats = $db->sql_results();
$categories = array();
foreach($cats as $cat)
{
$cat_info = array(
'name' => $cat['name'],
'description' => $cat['description'],
'image' => $setting['site_url'] . '/thumbnails/' . $cat['image'],
);
$categories[] = $cat_info;
}
include theme('index');
?>
我无法理解输出的来源,但它似乎介于两个文件之间。我在文件A中的include行之前添加了ob_start()
,在包含文件的最开头添加了ob_end_clean()
并且输出没有显示,但是这两个文件中没有任何杂散输出
答案 0 :(得分:6)
您需要使用编码UTF-8 without BOM
保存文件。
UTF-8 BOM是一个字节序列(EF BB BF),允许读者将文件识别为UTF-8文件。通常,BOM用于表示编码的字节顺序,但由于UTF-8没有任何编码问题,因此不需要BOM。
怎么做:
下载一个好的文字编辑器,例如Notepad++并使用该转换并使用UTF-8 without BOM
编码保存您的文件。
Here's a link to my other answer详细说明如何使用Notepad ++安装和转换文件编码。
答案 1 :(得分:0)
这可能是BOM。有些编辑可以选择使用BOM进行保存。尝试将文件保存在不同的编辑器中并上传,或找到bom设置并禁用它。
答案 2 :(得分:0)
它被称为BOM,可能是你的编辑在保存文件时把它推到了那里。也许您应该在编辑器中查找UTF8 WHITHOUT BOM选项。