1
echo ("<div style=\"text-align:center\">" . include ('file.php') . "</div>\n");

理由はわかりませんが、スクリプトにその行を入れるたびに、空白の画面が表示されます:(

4

10 に答える 10

7
echo "<div style=\"text-align:center\">";
include ('file.php');
echo "</div>\n";

インクルードはファイルの解析結果を返さないため、ここで連結しても意味がありません。

于 2009-09-22T21:10:30.880 に答える
4

このコードを実行すると:

echo ("<div style=\"text-align:center\">" . include ('temp-2.php') . "</div>\n");

(あなたの例からコピーして貼り付けたもので、ファイルの名前のみを変更しています)

この警告が表示されます:

Warning: include(temp-2.php</div> ) [function.include]: failed to open stream: No such file or directory

()forディレクティブが期待どおりに機能しているかどうかはわかりませんinclude...


実際には、インクルード マニュアル ページの例 #4は、次のように説明されているように見えます。

<?php
// won't work, evaluated as include(('vars.php') == 'OK'), i.e. include('')
if (include('vars.php') == 'OK') {
    echo 'OK';
}

// works
if ((include 'vars.php') == 'OK') {
    echo 'OK';
}
?>


そして、実際、コードをこれに書き換えます:

echo ("<div style=\"text-align:center\">" . (include 'temp-2.php') . "</div>\n");

はるかにうまく機能します。警告はありません。ファイルは実際に正しく含まれています。


補足として: 白い画面が表示される場合は、おそらく、構成がエラーと警告を「隠している」ためです。これは、開発環境にはあまり適していません。これらを表示すると、かなり苦労します。

これを変更するには、php.ini ファイルでerror_reportingおよびオプションを使用できます。display_errors

または、そのアクセス権がない場合は、error_reportingandを使用できますini_set-- スクリプトの冒頭で次のようなものを使用できます。

error_reporting(E_ALL);
ini_set('display_errors', 'On');

注 : もちろん、エラーをログに記録し (「参考文献」を参照log_errors)、エラーを表示しない本番環境では、これは望ましくありません。

于 2009-09-22T21:08:06.603 に答える
1

include関数ではなく、特別な言語構造です。これは、「パラメータ」が1つしかないため、「パラメータ」を括弧で囲む必要がない理由でもありますinclude。それを括弧で囲むことは、他の値を括弧で囲むことに似ています。

1 === (1) === ((1)) === (((1))) === …

代わりに、構成全体を括弧で囲む必要があります。

echo "<div style=\"text-align:center\">" . (include 'file.php') . "</div>\n";

ただしinclude、インクルードされたスクリプトファイルの出力を返さずに直接出力するため、出力をバッファリングして、そのファイルをインクルードしたスクリプトに次のように返す必要があります。

<?php // file.php
    ob_start();
    // …
    return ob_get_clean();

それはうまくいくでしょう。しかし、私はあなたがそれをしたいとは思わない。したがって、これはおそらく非常に簡単です。

echo "<div style=\"text-align:center\">";
include 'file.php';
echo "</div>\n";

ちなみに、、、、echoは特別な言語構造でもprintありexitます。require_once()またはdie()が機能しないdieも参照してください

于 2009-09-22T21:12:23.893 に答える
1

私はあなたがこのようなことをする必要があると思います:

ob_start();
include('file.php');
$contents = ob_get_clean();

echo ("<div style=\"text-align:center\">" . $contents . "</div>\n");

「include」ディレクティブは何も返さないため、文字列に追加しようとしても機能しません。

于 2009-09-22T21:12:57.963 に答える
1

そんなことができるかどうかはわかりません。最初にインクルードを実行してから、インクルード ファイルから特定の変数のエコーを実行します。

于 2009-09-22T21:05:18.377 に答える
0

印刷できる文字列を返す関数としてincludeを考えたことはありません。

リファレンスマニュアルは、どちらかといえばブール値を返すことを示唆しています。

于 2009-09-22T21:17:48.377 に答える
0

file.php の内容を出力するには、おそらくhttp://us3.php.net/file_get_contentsを使用することをお勧めします

于 2009-09-22T21:04:12.927 に答える
0

に何かありfile.phpますか?空であるか、何かが原因でエラーが発生している可能性があります。

于 2009-09-22T21:04:38.033 に答える
0

表示されている部分だけでなく、ブラウザでソース コードを見てください。通常、これは Ctrl+U を押すことで実行できます。div空の要素を出力するだけの場合は、ブラウザーに空白の画面が表示されます。<?php ?>また、.php ファイルは、出力される前にセットアップで解析される可能性が高いことに注意してください。つまり、タグとその間のコードが表示されることはありません。

于 2009-09-22T21:11:32.600 に答える
-1

file.php の最後に余分な改行がありますか?

于 2009-09-22T21:05:41.723 に答える