0

特定のスクリプト (a.php としましょう) の結果を別のスクリプト (b.php としましょう) に含めたいと思います。

PHP の include ステートメントとそれに対応する他のステートメント (include_once、require、require_once) がありますが、期待どおりに、処理結果ではなくファイルの内容が含まれているようです。

では、最初に a.php を処理してから、その結果 (ファイルの内容自体ではなく) を b.php スクリプトに含めるにはどうすればよいでしょうか?

一方、インクルード ファイル (a.php) に return ステートメントがある場合、ファイル全体が最初に処理されると予想されますか、それともその内容もそのまま b.php にインクルードされますか?

返信ありがとうございます。

4

4 に答える 4

3

a.php:

<?php
echo "world";

b.php:

<?php
ob_start();
include("a.php");
$a= ob_get_clean();
echo "Hello, $a!";  

多分?

于 2012-06-17T16:06:07.460 に答える
1

バックティック演算子の後にevalを使用したいようです。このようなもの:

$code = `/path/to/myscript.php`;
eval($code);

myscript.php が実行可能でない場合は、次のように php を前に付ける必要があります。

$code = `php /path/to/myscript.php`;

myscript.php を完全に信頼する必要があることに注意してください。そうしないと、セキュリティ上の問題が発生します。

これはおそらくあまり良い設計ではありません。目的を達成するためのより良い方法があるかどうかをよく考えてみてください。

于 2012-06-17T15:58:32.763 に答える
0

a.phpが Web 経由でアクセスできる場合はfile_get_contentshttp://(またはhttps://) URL で使用できます。これにより、通常の Web ページのようにスクリプトにアクセスし、Web サーバーが PHP を介してスクリプトを処理し、結果を返します。

a.php:

<?php

echo 2+2;

b.php:

<?php

echo file_get_contents('http://example.com/a.php');

出力:

4

上記の DaveRandom のコメントで述べたように、出力バッファリングを使用することもできます。とはいえ、これは通常、アプリケーション設計の模範ではありません。必要な結果ではなく、必要な結果を返すコードを用意することをお勧めechoします。だから多分このようなもの:

a.php:

<?php

function calculateA()
{
    return 2+2;
}

b.php:

<?php

include('a.php');
echo calculateA();

出力:

4

編集:いくつかの代替案はinclude、PHP ドキュメントのページで詳細に説明されています。

于 2012-06-17T15:56:57.000 に答える
-1

概要:

phpファイルがサーバーに属している場合:

ob_start();
$result = eval(file_get_contents('/path/to/your/script.php'));
ob_end_clean();

そうでない場合でも、HTTP経由でアクセスできます。

$result = file_get_contents('http://path.to/your/script.php');
于 2012-06-17T16:06:00.763 に答える