2011-07-27 82 views
0

我有一個PHP生成的頁面,其中包含提交表單的結果,我想要做的是將其保存爲服務器上的.doc文件。 一些谷歌搜索後,我碰到這個代碼,我適應傳來: -從php「results」頁面生成doc文件?

$myFile = "./dump/".$companyName."/testFile.doc"; 
$fh = fopen($myFile, 'w') or die("can't open file"); 
$stringData = "Bobby Bopper\n"; 
fwrite($fh, $stringData); 
$stringData = "Tracy Tanner\n"; 
fwrite($fh, $stringData); 
fclose($fh); 

但這樣做的問題是,我將不得不重新以手動將其寫入文件的結果,它似乎並不非常有效。

所以我繼續谷歌和發現了留給我坦率地抓我的頭PHP手冊,但是我最終發現這一點: -

ob_start(); 
// code to generate page. 
$out = ob_get_contents(); 
ob_end_clean(); 
// or write it to a file. 
file_put_contents("./dump/".$companyName."/testFile.doc",$out); 

這將創建該文件,但不寫什麼吧。但是,這似乎是做什麼(基於PHP手冊),即使我無法實現它的工作方式!

有什麼建議嗎?我不介意谷歌上搜索,如果我能想出一個體面的搜索詞:)

+0

你的代碼在我的環境中工作正常。你是在回聲還是打印ob_start和ob_get_contents之間的值? – cwallenpoole

+0

你是什麼意思的「重建結果」;爲什麼如你所說,這是低效的? – Bosworth99

+0

Cwallenpoole - 沒有迴應任何東西,我試圖使用什麼。謝謝Awea我會通讀該主題。 Bosworth99 - 效率低下我的意思是我必須再次單獨寫出每個$ _post結果 - 我已經創建了一個表來顯示它們中的每一個。這是可行的使用這種方法,但似乎笨重。 – Andrew

回答

1

這要高度重視爲你做它:

$cache = 'path/to/your/file'; 

ob_start(); 

// your content goes here... 
echo "hello !"; // would put hello into your file 

$page = ob_get_contents(); 

ob_end_clean(); 

$fd = fopen("$cache", "w"); 

    if ($fd) { 

    fwrite($fd,$page); 

    fclose($fd); 

} 

這也是一個偉大的方式來緩存動態頁面。希望能幫助到你。

+0

感謝,但除了創建文件,這似乎沒有寫任何東西嗎? – Andrew

+0

它說'//你的內容在這裏',你可以寫任何你想要的東西。 'echo/print'整個頁面。 – Sparkup

+0

抱歉:這個'fwrite($ fd,$ pages);'需要''fwrite($ fd,$ page);' – Sparkup