2011-01-25 6 views
1

trueに設定した場合、印刷する代わりに結果が返されるように、print_rはオプションの2番目のパラメータを受け入れることができます。変数に含める

私はincludeが同じように動作する2番目のパラメータを受け入れることを望みます。

代替手段はありますか?変数にファイルを含めるにはどうすればよいですか?

+0

**何を返すのですか? – delnan

+0

@delnan、指定されたファイルの解析された内容。 –

+0

ファイルのリテラル内容は?ファイル内のコードからの抽象構文ツリー?バイトコード? – delnan

答えて

7

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では、インクルードのスコープが(グローバルから関数のスコープに)変更されているためです。グローバルスコープに頼っていると、これによって潜在的な問題が発生する可能性があります。

+0

それは面白いです。それはどのようにパフォーマンスが賢明ですか? –

+0

オーバーヘッドはあまりありません。出力も最初に出力バッファに送られ、チャンクでクライアントに送信されるためです。そのため、すぐに出力を送信する場合は、flush()を呼び出す必要があります。 –

+0

私はこれにはほとんど費用がかかりません。より良い答えはあなたのアプリケーションのベンチマークとなるでしょう – arnaud576875

0

私は、スクリプトからhttp://www.php.net/manual/en/function.include.php

リターンのもので#5を探していると思います。

includeは、スクリプトからの戻り値を処理します。

+0

戻り値と出力は非常に異なるものです。 – akond

+0

確かに私は助けてもらえませんが、OPは彼のスクリプトを書き直す必要があると思います。 –

関連する問題