2011-01-13 54 views
1

我想做一個PHP文件我有我正在建設的變量的一部分。如何使一個包含的PHP文件變量

$print = 'something'; 
$print .= include('register_form.php'); 

print $print; 

然而,這是行不通的。 register_form.php將不會包含在$ print var中,並且會在打印輸出開始之前回顯出來。

有沒有辦法做到這一點?

我知道我可以進入register_form.php並使其成爲register_form()的函數,然後返回它的輸出,但是,由於我已經構造了這個方法(並且我有點新鮮)如果我只能做上述嘗試,這會造成更多的麻煩。

感謝您的指點!

回答

7

您可以通過output buffering來代替。

ob_start(); 
include('register_form.php'); 
$print = ob_get_contents(); 
ob_end_clean(); 


echo $print; 
+0

用這種方法,我會刪除了把一切我在$打印可變打印出需要什麼? – willdanceforfun 2011-01-13 23:55:07

+0

是的,輸出緩衝將收集所有的回聲/打印的東西到一個緩衝區,你可以用`ob_get_contents()`獲取它的內容,並用`ob_end_clean()`` – 2011-01-13 23:56:41

0

輸出緩衝:

ob_start(); 
include('register_form.php'); 
$output = ob_get_clean(); 

echo $output; 
1

另一種選擇是的file_get_contents($文件名);

將整個文件讀入一個字符串。

file_get_contents

--edit

不好意思,剛纔看了你的問題多一點正確。如果你在你的php表單中有echo語句,輸出buffing是唯一的方法。

更簡潔的方法是讓輸出表單函數返回HTML,以便您可以在輸出時選擇。這可能是一個小小的頭痛,但將來會更容易。

0

包含的文件可以有返回值。通過將這與輸出緩衝相結合,您可以實現您想要的。

register_form.php

ob_start(); 
// content 
return ob_get_clean(); 

那麼你的代碼將工作:

$print = 'something'; 
$print .= include 'register_form.php' ; 
echo $print; 
相關問題