2010-11-22 84 views
6

你好有一種方法可以在處理php代碼的同時獲取一個php文件的內容嗎? 我需要包含一個代碼到另一個頁面,但我需要打印它在特定位置的內容。file_get_contents和php代碼

如果我使用include,代碼將打印在html標籤之前,當然這會導致它在頁面之前被處理,但是如果我使用file_get_contents,內容會被放在頁面中,但如果我有一些php標籤,也像純文本一樣。

謝謝。

編輯:抱歉,傢伙好像在我寫作的時候醉了。我糾正了。

我有一個引擎處理頁面內容,將它們放入一個變量,然後將它們打印在html頁面中的特定位置。在引擎中,我需要「嵌入」其他可能有一些php標籤的「靜態」頁面的代碼。如果我使用file_get_contents,我將以純文本的形式獲取內容(如果使用include,它將不起作用,因爲它不是它的函數)。所以我需要的是將PROCESSED代碼嵌入到引擎中(作爲即將印刷的HTML)。

+3

你能澄清你想要什麼和爲什麼'包括()'使用文件系統路徑將不會爲你工作?我不明白。 – 2010-11-22 00:50:35

+0

你能改說嗎?我真的不明白你在說什麼。 – robbrit 2010-11-22 00:51:32

+0

感謝您的澄清。我在我的答案中正確假設。 – ceejayoz 2010-11-22 01:34:57

回答

22

您可以使用output buffer來包含一個PHP文件,但保存結果輸出供以後使用,而不是立即打印到瀏覽器。

ob_start(); 
include('path/to/file.php'); 
$output = ob_get_contents(); 
ob_end_clean(); 

// now do something with $output 
+1

不知道他是否需要,因爲他*似乎*想要PHP源代碼...不清楚*他需要什麼 – 2010-11-22 00:56:58

+0

他說:「如果我使用file_get_contents內容被採取但如果我有一些PHP標記我會像純文本一樣獲得這些內容「,這表明他正在努力做到這一點。 – ceejayoz 2010-11-22 00:58:01

+0

我讀了那部分不同,但我認爲你是對的 – 2010-11-22 01:13:31

-1

你的問題是不是100%清楚,但它看起來像你想包括一個遠程PHP源,你可以使用包括(「http://domain.com/path/to/php.phps」 );而不是file_get_contents。

你說你只需要遠程代碼的一部分,如果是這樣,你可以使用file_get_contents,用substr或reg exp代碼獲取這部分代碼保存在本地文件中幷包含或做一個評估。

這些解決方案都不安全也不建議,您不應該包含遠程文件以直接評估您的代碼。

-1

如果我理解正確;你正試圖加載一個php文件來讀取它的內容並同時執行它。

即: include('/foo/bar')file_get_contents('/foo/bar')

下面的函數都並返回文件的內容,假設它的存在。

function load_and_process($path) { 
    if(file_exists($path) { 
     include($path); 
     return file_get_contents($path); 
    } 
    return false; 
} 

,並調用它像這樣:

if($file_contents = load_and_process('/foo/bar')) { 
    echo "Loaded $file_contents from /foo/bar"; 
}