echo ("<div style=\"text-align:center\">" . include ('file.php') . "</div>\n");
理由はわかりませんが、スクリプトにその行を入れるたびに、空白の画面が表示されます:(
echo "<div style=\"text-align:center\">";
include ('file.php');
echo "</div>\n";
インクルードはファイルの解析結果を返さないため、ここで連結しても意味がありません。
このコードを実行すると:
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_reporting
andを使用できますini_set
-- スクリプトの冒頭で次のようなものを使用できます。
error_reporting(E_ALL);
ini_set('display_errors', 'On');
注 : もちろん、エラーをログに記録し (「参考文献」を参照log_errors
)、エラーを表示しない本番環境では、これは望ましくありません。
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
も参照してください
私はあなたがこのようなことをする必要があると思います:
ob_start();
include('file.php');
$contents = ob_get_clean();
echo ("<div style=\"text-align:center\">" . $contents . "</div>\n");
「include」ディレクティブは何も返さないため、文字列に追加しようとしても機能しません。
そんなことができるかどうかはわかりません。最初にインクルードを実行してから、インクルード ファイルから特定の変数のエコーを実行します。
印刷できる文字列を返す関数としてincludeを考えたことはありません。
リファレンスマニュアルは、どちらかといえばブール値を返すことを示唆しています。
file.php の内容を出力するには、おそらくhttp://us3.php.net/file_get_contentsを使用することをお勧めします
に何かありfile.php
ますか?空であるか、何かが原因でエラーが発生している可能性があります。
表示されている部分だけでなく、ブラウザでソース コードを見てください。通常、これは Ctrl+U を押すことで実行できます。div
空の要素を出力するだけの場合は、ブラウザーに空白の画面が表示されます。<?php ?>
また、.php ファイルは、出力される前にセットアップで解析される可能性が高いことに注意してください。つまり、タグとその間のコードが表示されることはありません。
file.php の最後に余分な改行がありますか?