2012-08-27 75 views
1

這似乎應該是一個明顯的,快速的解決方案,但事實並非如此。有沒有一種方法,不使用eval()來讀取預解析爲最終HTML的本地PHP文件?

我有一個本地文件,可以完成一些數據庫工作並輸出HTML,我們稱之爲file1。我有另一個需要使用這些信息的文件,但不需要自己生成它,file2

我的計劃是將預先解析的PHP(此處爲HTML)拖入file2,但它取代了PHP代碼。這顯然可以用eval()來處理,但我寧可不要。沿着wget()行的東西可能會訣竅,但我寧願不從我的PHP腳本運行命令行,如果可能的話。

有沒有一種解決方案,同時避免上述兩個選項,或者我不得不咬住子彈並使用其中之一?

快速說明:整個file1未被使用。 file2剔除它需要的部分,只需輸出從file1產生的所有HTML是不可行的。

+1

聽起來好像你應該使用[包括(http://php.net/manual/en/function.include.php),如果你想從文件2 – ernie

+0

那裏獲得文件1的部分「HTML中的」代碼是從哪裏來的?你相信它的來源? – netcoder

+0

這是我自己的腳本,所以我確實相信內容。 – Dan

回答

1

file_get_contents(「http://Full.URL」); 並使其通過30個字符..

- 編輯 -

確定。

當你在一個URL上嘗試file_get_contents時,php會請求URL,就像一個好的o-wget一樣。您也可以使用它來觸發腳本。

檢查http://www.php.net/manual/en/function.file-get-contents.php瞭解更多信息。

+0

這是一個很好的解決方案。唯一的缺點是你必須通過'TCP'請求文件作爲'HTTP請求'來處理它(本地引用將讀取源文件)。這(特別是如果指定了「FQDN」)將需要時間發送並通過互聯網返回。當請求停留在內部網時,可能使用'localhost/PATH'會加快速度。 –

3

你可以嘗試像下面的緩衝輸出,並將其保存到一個變量:現在

ob_start(); 
include "file1.php"; 
$content = ob_get_contents(); 
ob_end_clean(); 

$content將包含源文件的「呼應」的輸出。

ob_*功能是緩衝內容的家庭。他們暫時禁用將數據輸出到STDOUT,而是將回顯的內容存儲在緩衝區中。 Documentation

Example on Ideone

+0

我遇到了同樣的抽象問題,並且通過使用'include()'頁面和'get_my_content()'使用該頁面中的函數來生成工作解決方案來生成內容。 –

+0

@awashburn:這是另一個有效的解決方案,我只是不喜歡將函數中的所有內容封裝在一個函數中(或者被要求用函數tbf做任何事情)。:) –

+1

可以理解,我的函數在文件解決方案中很聰明,但有點凌亂。我喜歡這些功能提供的方法,作爲一個「更清潔」,但稍微深奧的解決方案。 –

相關問題