2

php includeを使用してサイトテンプレートとその動作を取得しましたが、出力の前に2つのdoubleqoutesが表示されます。

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<?php
require_once 'common.php';
require_once 'load.php';
?>
</body>
</html>

Common.php。(common.phpを含めるだけでも同じ結果になるため、load.phpをここに貼り付けません)

<?php
if (!defined('ABSPATH'))
    define('ABSPATH', dirname(__FILE__) . '/');

/** Sets up global vars and included files. */
define('INC', 'includes/');
define('FUNCS', 'functions/');
define('CLS', 'classes/');
define('MODS', 'modules/');
#paths

#Initialing
// include require files to set initial
require_once(ABSPATH . 'configs.php');
function openDB() {
    global $dbCon;

    require_once(ABSPATH . CLS . '/class-db.php' );

    if (isset($dbCon))
        return;

    $dbCon = new db(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
}
openDB();
?>

common.phpが空であったとしても、引用符はあります:/

と出力:

<!DOCTYPE html>
<html>
<head>
<body>
" <!-- this double quote should not be here -->
" <!-- this double quote should not be here -->
<div>hello world!</div>
</body>
</html>

だから私はすべてのページに空白があります。インクルードファイルはこのようなヘッダーを送信しますか?

4

4 に答える 4

2

含まれているファイルの 1 つにタグの前後に非 ASCII 文字があると思い<?phpます (必須ではありません common.php と load.php も configs.php または class-db.php である可能性があります)。これはエディターには表示されませんが、表示されます。ブラウザで。HEX エディタでファイルを調べてこれを確認するか、「ob_get_clean」で遊んで、それらのシンボルが表示される正確なポイントを見つけることができます。

于 2012-07-15T07:25:13.090 に答える
0

ユージーンは正しい。
私は同じ問題に直面していて、グーグルでこのスレッドに来ましたが、それを正しく理解していませんでした。

次に、「phpにはスペースと改行の追加が含まれます」などのさまざまなキーワードでもう少し検索し、別のスレッドを見つけた後、このスレッドの意味を理解しました。

また、これは実際にはphpの問題ではありません。ほとんどの場合、異なるエディター間でコードをコピーして貼り付けると、ドキュメントタイプがutf-8とansiなどの間で変更されるため、余分な非表示の16進データが追加されます。

これがより正確なURLであり、ページの最後に解決策があります
-php-require-include-adds-line-break-to-html

お役に立てば幸いです。

于 2012-10-20T22:38:51.997 に答える
0

「common.php / load.php」をメモ帳++で開き、エンコーディングを「BOMなしのUTF-8でエンコード」に変更します

于 2013-07-20T10:15:36.817 に答える