2011-08-01 7 views
8

file_get_contents()でファイルにいくつかの変数を送信したいと考えています。PHPが変数をfile_get_contents()に送信する

これはfirstfile.phpです:

<?php 
$myvar = 'This is a variable'; 
// need to send $myvar into secondfile.php 
$mystr = file_get_contents('secondfile.php'); 
?> 

これはsecondfile.phpです:私は'The value of myvar is: This is a variable'

に等しくなるように変数$mystrをしたい

The value of myvar is: <?php echo $myvar; ?> 

ができるようになる他の機能がありますあなたはPHPでこれを行う?

+0

可能重複文字列にコンテンツ?](http://stackoverflow.com/questions/6905364/what-would-be-the-best-way-to-load-with-variables-multiple-files-content-into-a) – Phil

答えて

15
ob_start(); 
include 'secondfile.php'; 
$myvar = ob_get_clean(); 

はいえ助言すること:多くのob_start年代に、あなたのコード内で通常あなたはその後、エコーするかどうかを選択することができた、文字列を返す関数を定義する必要があります看板です。

+0

+1エコーについての良い点。 – Nicole

15

スクリプトを実行しているファイルの内容を取得の間には大きな違いがあります:

  • include —このPHPディレクティブがスクリプトとして指定されたファイルを実行しますスコープはincludeが呼び出されたスコープと同じです。したがって、変数を変数に渡すには、includeを呼び出す前に変数を定義するだけです。 includeは、ローカルでのみ使用することができます(PHPサーバーと同じファイルシステム上のファイルのみを含めることができます)。

  • file_get_contents

    ローカルをファイルを取得し、これは単にファイルに含まれているテキストを取得します。 PHP処理は行われないので、変数を渡す方法はありません。上記の例で$myvarを調べると、正確な文字列 "<?php echo $myvar; ?>" —が実行されていないことがわかります。

    しかし、PHPは、file_get_contentsが "リモート"ファイルの内容を取り込めるようにすることで少し混乱しています—インターネットアドレス。この場合、コンセプトは同じ— PHPはそのアドレス—ではなく、PHP、Java、Rubyなどで実行されているものをそのまま返します。リモートサーバその結果を生み出す。

    この場合、URLの仕様(APIの場合など)に応じて、URL内の変数(リクエストパラメータともにGETと呼ばれます)を「渡す」ことができます。そのリモートサーバーによって処理されるスクリプトで処理されるように指定されていない変数を渡す方法はありません。

    注:それはさらに多くのものを混乱させることができますので、あなたが本当にわからない場合MAYいう「リモートサーバ」は、しかし注意してください、あなた自身のサーバでどのようにすべての作品(それは第二になり、完全に別々の要求)。includeの代わりにと似たの結果が得られても、通常はこれを行う理由がありません。

+0

OPの良い説明、私はそれを行うためのエネルギーがなかった、+1。 – Wrikken

+0

完璧、ありがとう!:) – Mike

1

次のコードスニペットは、どのようにPHPの関数のfile_get_contentsを使用してHTTP POSTリクエストを送信する簡単な方法を示しています

<?php 

$url = 'http://url.com/path'; 
$data = array('param1' => 'value1', 'param2' => 'value2') 

// use key 'http' even if you send the request to https://... 
$options = array('http' => array(
    'method' => 'POST', 
    'content' => http_build_query($data) 
)); 

$context = stream_context_create($options); 
$result = file_get_contents($url, false, $context); 

print_r($result); 

OR Passing variable in a URL (php) & file_get_contents()

0

次の例のように、sprintf関数を使用することができます: firstfile.txt

The value of my var is: %s 

<?php 
$f = file_get_contents("firstfile.txt"); 
$var = "some"; 
echo sprintf($f, $var); 

結果は私のvarの値

なりますecondfile.phpは次のとおりです。(変数と)複数のファイルをロードするための最良の方法だろう[何の一部

関連する問題