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

出力がどこから来ているのかわかりませんが、2つのファイルの間のどこかにあるようです。ob_start()ファイルAのインクルード行の直前とインクルードファイルの最初に追加ob_end_clean()しましたが、出力は表示されませんが、2つのファイルのどこにも漂遊出力はありません。

4

3 に答える 3

6

エンコーディングを使用してファイルを保存する必要がありますUTF-8 without BOM

UTF-8 BOMは、リーダーがファイルをUTF-8ファイルとして識別できるようにする一連のバイト(EF BB BF)です。通常、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と呼ばれ、ファイルを保存するときにエディターがBOMを配置した可能性があります。エディターでUTF8WHITHOUTBOMオプションを探す必要があるかもしれません。

于 2010-08-30T04:10:17.713 に答える