0

我一直在使用 PHP 编写自定义 CMS,直到最近才遇到任何问题。测试时,我注意到该字符串已开始仅出现在索引页的顶部。在整个代码中使用一些 die 语句进行测试,似乎输出来自文件包含之间。

文件 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');
?>

我无法理解输出的来源,但它似乎位于两个文件之间。我已经ob_start()在文件 A 的包含行之前和包含文件ob_end_clean()的最开始添加了输出,但是没有显示输出,但是两个文件中的任何地方都没有杂散输出。

4

3 回答 3

6

您需要使用 encoding 保存文件UTF-8 without BOM

UTF-8 BOM 是一个字节序列 (EF BB BF),允许阅读器将文件识别为 UTF-8 文件。通常,BOM 用于表示编码的字节顺序,但由于 UTF-8 没有任何编码问题,因此 BOM 是不必要的。

怎么做:

下载一个好的文本编辑器,如Notepad++UTF-8 without BOM ,并使用该编辑器转换并使用编码保存您的文件。

这是我的其他答案的链接,详细说明了如何使用 Notepad++ 安装和转换文件编码。

于 2010-08-30T04:09:02.720 回答
0

这可能是一个BOM。一些编辑器可以选择使用 BOM 进行保存。尝试将文件保存在其他编辑器中并上传,或者找到 bom 设置并禁用它。

于 2010-08-30T04:09:20.163 回答
0

它被称为 BOM,可能您的编辑器在保存文件时将其放在那里。也许你应该在你的编辑器中寻找一个 UTF8 WHITHOUT BOM 选项。

于 2010-08-30T04:10:17.713 回答