PHPファイルを変数にロードするにはどうすればよいですか?


98

PHPファイルを変数にロードする必要があります。お気に入りinclude();

次のような単純なHTMLファイルをロードしました。

$Vdata = file_get_contents("textfile.txt");

しかし今、私はPHPファイルをロードする必要があります。

回答:


116

PHP生成されコンテンツを取得したい場合は、次のようにします。

$Vdata = file_get_contents('http://YOUR_HOST/YOUR/FILE.php');

それ以外の場合、PHPファイルのソースコードを取得する場合は、.txtファイルと同じです。

$Vdata = file_get_contents('path/to/YOUR/FILE.php');

6
「PHPによって生成されたコンテンツ」をhttpを使用せずに取得し、パスを直接使用したい場合はどうなりますか?
Osa

4
@Osa:必要に応じて、おそらく、eval()またはgithub.com/nikic/PHP-Parserを使用して、より複雑なコードを処理することができます。
Alix Axel

2
そのためのphpパーサーの実装は、やり過ぎのようです
DavidFariña2013

1
これがPOSTまたはGETを渡す方法がわかりません。外部PHPファイルは現在のファイルのコンテキストで処理されるため、neobieの答えはより正確で適切だと思います。
ADTC 2016年

上記の例を使用すると、get_template_directory_uri()を使用してファイルパスに結合できます。これにより、ダイレクトパスを使用する問題が解決されます。 $Vdata = file_get_contents(get_template_directory_uri() . '/path/to/file/in/theme.text');
イアンブルース

124
ob_start();
include "yourfile.php";
$myvar = ob_get_clean();

ob_get_clean()


1
うまくいきました!しかし、含めようとするときはいつでも:yourfile.php?id = 3は機能しません。助言がありますか?
tvgemert 2011

1
httpを使用していないため、その場合は$ _GETを介して値を渡す必要があります。
Francesco Belladonna

画像はどうですか?
kta 2013年

1
ヒント: PHP 4.3.0以降、最後の2行を単純に短くすることができます$myvar = ob_get_clean();ob_get_cleanのドキュメントを参照)
ADTC

パーフェクト!ありがとうございました。
lowtechsun 2017

7

eyzeが示唆するようにhttp://を使用している場合、PHPスクリプトの出力のみを読み取ることができます。PHPスクリプト自体は、実行中のスクリプトと同じサーバー上にある場合にのみ読み取ることができます。次に、次のようなものを使用できます

$Vdata = file_get_contents('/path/to/your/file.php");

こんにちは、これは静的なHTMLのみを取得します。この例を参照してください。これがロードするファイルの場合。///////////////// <?php echo( "text1"); ?> Text2 ///////////////これは私が得た出力です。//////////////////// Text2 ///////////////////
Kombuwa

@Kombuwa、元の質問を編集して回答を明確にしてください。明確に説明する余地がありますか?感謝=)
デビッドはモニカを復活させると言います

7

ウェブサーバーを介さずにファイルをロードしたい場合は、次のように動作するはずです。

$string = eval(file_get_contents("file.php"));

これにより、ファイルの内容が読み込まれて評価されます。PHPファイルは、<?php?>タグを使用evalして完全に作成し、評価する必要があります。


私はこの方法が好きです。evalが評価するために、ファイルが<?phpおよび?>タグで完全に形成されていないだけです。他に方法はありますか?
ItMeDom 14

4

理論的には、fopenを使用してから、stream_get_contentsを使用できます。

$stream = fopen("file.php","r");
$string = stream_get_contents($stream);
fclose($stream);

これでファイル全体が$ stringに読み込まれ、評価されなくなります。ローカルパスを指定したときにfile_get_contentsが機能しなかったことに驚いていますが...


3

または、出力バッファリングを開始し、include / requireを実行してから、バッファリングを停止することもできます。ob_get_contents()を使用すると、他のPHPファイルによって出力されたものを変数に取得できます。


3

ファイルに次のようなreturnステートメントがある場合:

<?php return array(
  'AF' => 'Afeganistão',
  'ZA' => 'África do Sul',
  ...
  'ZW' => 'Zimbabué'
);

これを次のような変数に取得できます。

$data = include $filePath;

1
plus1ありがとう、これが私が探していたものです
ホワイトシロイ

1

サーバーでallow_url_fopenがオフになっている場合、file_get_contents()は機能しません。ほとんどの共有Webホストでは、セキュリティリスクのため、デフォルトでオフになっています。また、PHP6では、allow_url_fopenオプションは存在しなくなり、すべての関数は永続的にオフに設定されているかのように動作します。したがって、これは非常に悪い方法です。

http経由でファイルにアクセスしている場合に使用する最良のオプションはcURLです

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.