2012-06-17 65 views
0

我想將給定腳本(比方說a.php)的結果包含到另一個腳本(比方說b.php)中。如何獲得PHP腳本**結果**包含在另一個PHP腳本中?

儘管有PHP include語句和其他對應語句(include_once,require和require_once),但它們似乎都包含文件內容而不是我所期望的處理結果。

那麼我怎樣才能得到a.php處理第一,然後包括其結果(而不是文件內容本身)到b.php腳本?另一方面,如果我包含的文件(a.php)有一個return語句,那麼整個文件是預期首先被處理還是其內容也被包含在b.php中?

在此先感謝您的答覆。

+0

只是將a.php放在b.php的頂部或腳本的起始位置 – Hardik

+1

您可以舉一個例子來說明爲什麼包含/需要不符合您的需求? – Niko

+1

是的,它確實看起來'include' /'require'是你想要的,雖然它可能是你還需要[輸出緩衝](http://php.net/manual/en/book.outcontrol.php),例如'ob_start();包括'a.php'; $ resultOfA = ob_get_clean();' – DaveRandom

回答

4

a.php只會:

<?php 
echo "world"; 

b.php:

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

也許?

0

如果可以通過網絡訪問a.php,則可以使用file_get_contentshttp://(或https://)URL。這將像普通的網頁一樣訪問您的腳本,使您的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 page in the PHP documentation

1

聽起來像要使用backtick operator後跟eval。 事情是這樣的:

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

如果myscript.php不可執行你必須用PHP它的前綴,如:

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

請注意,您需要完全信任myscript.php否則這是一個安全問題。

這可能不是一個很好的設計,你可能想要考慮是否有更好的方法去做你想做的事情。

-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'); 
相關問題