true
に設定した場合、印刷する代わりに結果が返されるように、print_r
はオプションの2番目のパラメータを受け入れることができます。変数に含める
私はinclude
が同じように動作する2番目のパラメータを受け入れることを望みます。
代替手段はありますか?変数にファイルを含めるにはどうすればよいですか?
true
に設定した場合、印刷する代わりに結果が返されるように、print_r
はオプションの2番目のパラメータを受け入れることができます。変数に含める
私はinclude
が同じように動作する2番目のパラメータを受け入れることを望みます。
代替手段はありますか?変数にファイルを含めるにはどうすればよいですか?
ob_start()
とob_get_clean()
はあなたのためにそれを行います。
ob_start();
include "file.php";
$result = ob_get_clean();
のob_start()の後すべてがエコー(キャプチャ、およびob_get_cleanれる)キャプチャしたデータを取得するために使用されます。
あなたもこのようなinclude2
機能行うことができます
:
function include2($file) {
ob_start();
include $file;
return ob_get_clean();
}
をそして、このようにそれを使用します。@ircmaxellで述べたように、このinclude2
機能は全く同じように動作しません
include2("file.php"); // return all printed values instead of really printing them
include
では、インクルードのスコープが(グローバルから関数のスコープに)変更されているためです。グローバルスコープに頼っていると、これによって潜在的な問題が発生する可能性があります。
それは面白いです。それはどのようにパフォーマンスが賢明ですか? –
オーバーヘッドはあまりありません。出力も最初に出力バッファに送られ、チャンクでクライアントに送信されるためです。そのため、すぐに出力を送信する場合は、flush()を呼び出す必要があります。 –
私はこれにはほとんど費用がかかりません。より良い答えはあなたのアプリケーションのベンチマークとなるでしょう – arnaud576875
私は、スクリプトからhttp://www.php.net/manual/en/function.include.php
リターンのもので#5を探していると思います。
includeは、スクリプトからの戻り値を処理します。
戻り値と出力は非常に異なるものです。 – akond
確かに私は助けてもらえませんが、OPは彼のスクリプトを書き直す必要があると思います。 –
**何を返すのですか? – delnan
@delnan、指定されたファイルの解析された内容。 –
ファイルのリテラル内容は?ファイル内のコードからの抽象構文ツリー?バイトコード? – delnan