0

わかりました、私は歴史上最も奇妙な問題を抱えています。私は HTML で完全に動作する Web サイトを作成していますが、PHP からレンダリングすると、まったく同じクライアント ソース コードを持っているにもかかわらず、非常に奇妙な動作が発生します (文字通り文字ごとに調べました)。

最初は、インクルードしている「functions.php」ファイルで何かを台無しにしたと思っていましたが、エラーは発生せず、そのファイルの内容を include(' functions.php'); 行は、問題が消えます。

これが私のコードです(一部のHTMLが削除され、これがすべてのPHPです):

<?php
    error_reporting(E_ALL);
    ini_set('display_errors','1');
    include 'functions.php';
    $footer = file_get_contents('footer.txt');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <title>Removed</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js"></script>
    <script type="text/javascript" src="js/main.js"></script>
    <link type="text/css" rel="stylesheet" href="css/jquery-ui-custom.css" />
    <link type="text/css" rel="stylesheet" href="css/main.css" />
</head>
<body>
    <div id="header">
        <div id="headerContent">
        <div id="logo">
            &nbsp;
        </div>
<?php
    echo trim(GetNav());
?>
        </div>
    </div>
    <div id="content">
<?php
    $NumberOfNewsItems = 2;
    echo trim(GetNews($NumberOfNewsItems));
?>
    </div>
<?php
    echo trim($footer);
?>

</body>
</html>

関数 GetNav と GetNews はデータベースから情報を取得するため、それらのコードを表示するつもりはありません。また、前述のように、ファイルをインクルードせずにその内容をインクルードした場所にコピーする場合を呼び出すと、ほとんどの空白が消えます ('echo $footer' 呼び出しがある場所にはまだいくつかあります。

基本的に、ソースコードを見ると、すべて問題ないように見えます。F12 キーを押して開発ツールを確認すると、要素タブにタグの直後 (サイトの外観に影響を与える) とタグの間に大量の余分な空白 (二重引用符で囲まれている) が表示されます。フッターとコンテンツの Div (これもサイトの外観に影響します)。

また、このビューでは、 のすべてのタグが最初の空白のセットの下にあり、タグは空です (例: <head></head>)。

ソース コードは問題ないように見えます (そして、ソース コードを HTML ファイルにコピー アンド ペーストすると問題なく動作します)。

オビ=ワン=ケノービを助けてください、あなたは私の唯一の希望です (そうです、私はスターウォーズが大好きですが、彼らが 3 つ以上の映画を作ってくれたらよかったのにと思います)。

PS これは非常に明白かもしれませんが、私は余暇に家族のためにこれを行っている .Net 開発者です ($ 記号が過度に好きな言語であっても、新しい言語を学ぶのは楽しいことです)。私は世界最大の初心者です。

編集:開発ツールに表示されるのは次のとおりです。

<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>
"



      "
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <title>Removed</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js"></script>
    <script type="text/javascript" src="js/main.js"></script>
    <link type="text/css" rel="stylesheet" href="css/jquery-ui-custom.css" />
    <link type="text/css" rel="stylesheet" href="css/main.css" />

等。

EDIT2:明確にするために、開発ツールが何を表示するかは気にしません。すべてが完璧であることを除けば、実際のWebサイトでそれらの引用がどこにあるかを示す空白を取得しているだけです.

EDIT3: また、要素セレクターで空白をクリックすることはできず、要素タブで空白を選択しても、Web サイトの何も強調表示されません。ただし、要素タブで削除すると、Web サイトは修正されますが (明らかにリロードされるまで)、明らかに問題の解決にはなりません。

4

3 に答える 3

1

functions.php ファイルの ?> を削除し、コードの後に​​空白行を削除してみてください。また、functions.php はメイン ファイルと同じディレクトリにありますか?

ヒントとして、file_get_content の代わりに footer.php を含めてください :-)

于 2013-03-08T12:47:19.863 に答える
0

私は満足のいく方法でこれを修正できませんでしたが、実装した回避策は次のとおりです。

ヘッダーからインクルードを完全に削除し、functions.php を関数ごとに 1 つのファイルに分割し、呼び出す必要がある場所にインクルードしました。

これは理想的ではありませんが、私の問題を軽減しました。PHP を日常的に使用する必要がないことをうれしく思います :)。

于 2013-03-11T12:48:17.467 に答える
0

私は同じ問題を抱えていました.コンソールでは、htmlのソースは次のようになりました:

エンコーディングを確認すると、一部のファイルは bom で utf-8 でエンコードされ、一部は big5 でエンコードされていました。これらのファイルをutf-8(bomなし)に保存することで、問題が解決しました。

Sublime Text 2 とパッケージ マネージャーの EncodingHelper を使用して、現在のファイル エンコーディングを確認しました。

それが役に立てば幸い。

于 2013-03-13T15:10:07.450 に答える