0

これは可能ですか? はいの場合、このアプローチをどのように使用しますか? この関数を使用したことがなく、いつこの関数を使用するのか本当にわからないため、ob_start の目的が実際にはわかりません。

私はすでにここで同様の質問をしましたが、答えが得られなかったので、このより正確な質問で、このジレンマに対するより良い答えが得られることを願っています.SVNを介してこれを行う他の方法があることも理解しています.しかし、外部ファイルを含めるアプローチを続けたいと思います。

ありがとうございました。

4

2 に答える 2

3

OB (出力バッファリング) システムはOUTPUTにのみ影響します。通常はリモート ブラウザに送信されるものをすべてキャプチャし、メモリ バッファに格納します。PHP コードの平均的な部分に関する限り、出力が一時的にトラップされていることを除けば、何も変わっていません。

OB は、何らかの理由で出力を生成しているが、まだ送信できない場合などに便利です。

echo 'this will break the next line';
header("Location: otherpage.php");

出力バッファリングを追加すると、ヘッダー リダイレクトが機能するようになります。

ob_start();
echo 'this would have broken the next line, but output has been trapped';
header("Location: otherpage.php");
echo ob_get_clean(); // output actually occurs here
于 2012-11-29T16:18:05.867 に答える
1

別の投稿者が述べたように、ob_start はプログラムへの入力には影響しません。

個々のスクリプトに変数でいっぱいの PHP ファイルを含めたい場合は、require_once (http://php.net/manual/en/function.require-once.php) を使用することをお勧めします。これは、指定された PHP ファイルが以前に評価されていない場合にのみ、現在のスコープで評価されます。include はファイルの読み込みに失敗したかどうかを通知せず、構造の _once の側面により、複数の PHP ファイルにアクセスした場合 (頭痛の種になる可能性があります) にファイルをリロードしないようにするため、require_once 関数を使用するように言います。

サーバー上で実行されるすべての php プログラムにファイルから変数を取り込もうとしている場合は、php.ini ディレクティブ auto_prepend_file (http://us3.php.net/manual/en/ini.core.php#ini .auto-prepend-file)。このディレクティブは、スクリプトを評価する前に、すべてのリクエストに対して (include または require と同様に) ファイルをロードします。

これが探しているものではない場合、探しているものを明確にできますか?

編集: コメントの例

$myStringArray = file('http://somewhere.com/file.txt');  //get the file contents as an array of lines

$myEvaluationString = ''; //set up a string which we will eventually evaluate

foreach ($myStringArray as $line) {

  $myEvaluationString = "$line\n"; //loop over each line and add it to our evaluation string

}

$myEvaluationString = rtrim($myEvaluationString); //clean off the trailing newline

eval($myEvaluationString); //evaluate the string
于 2012-11-29T16:24:51.213 に答える