2011-04-11 92 views
0

PHP - 我已經閱讀並使用了許多答案,但我也一直在獲取頁面的HTML
,我該如何阻止這個!!,或者我只是愚蠢的,沒有不要
答案。 (新格式版本,對不起你們!)使用PHP創建CSV文件

下面是代碼:

function WriteCSVFile($csvArr, $nLine) 
{ 
    header("Content-type: text/csv"); 
    header("Content-Disposition: attachment; filename=file.csv"); 
    header("Pragma: no-cache"); 
    header("Expires: 0"); 
    header("Cache-control: private"); 
    header("Cache-control: must-revalidate, post-check=0, pre-check=0"); 

    for($nLoop = 0; $nLoop <= $nLine; $nLoop++) 
     echo $csvArr[$nLoop]; 
} 
+1

對CSV文件使用MIME類型'text/csv'。這應該會讓你的瀏覽器把它當作一個CSV。 – 2011-04-11 04:07:01

+0

另外,請將任何代碼縮進4個空格。這是不可讀的。 – Amadan 2011-04-11 04:08:35

+0

感謝Amadan,我以爲我做到了,下次試試hardeer。 – roydellray 2011-04-11 05:07:48

回答

1

你循環以下你輸出中的所有頭前:

for($nLoop = 0; $nLoop <= $nLine; $nLoop++) 
    echo $csvArr[$nLoop] . "<br />"; 

棒,你的後header()

編輯

正如我在'之前'所做的那樣,您更改了它,我仍然會保留for循環。我要指出的一件事是,你打電話function WriteCSVFile($csvArr, $nLine)

但是你永遠不會告訴我們這個fn()是如何被調用的,它可能是這個函數輸出的東西,因此你有html,你的頭文件不會如果你已經有東西輸出給用戶的話。

檢查什麼是輸出(什麼HTML ??),然後在您的PHP代碼中搜索確切的HTML。

+0

非常感謝,但是如果你注意到我做了這些,第一個循環對我來說就是一個虛擬調試,爲了確保我有正確的信息,只是爲了確保它不會引起注意,我將它評論如下: – roydellray 2011-04-11 05:00:27

+0

注意第一個循環被刪除,但仍然輸出HTML – roydellray 2011-04-11 05:23:52

+0

@Hans Engel - 感謝Hans,如上所述,但仍然得到HTML,我仔細檢查了代碼以確保數組是乾淨的。 – roydellray 2011-04-11 05:26:35

0
for($nLoop = 0; $nLoop <= $nLine; $nLoop++) 
    echo $csvArr[$nLoop] . "\n"; 

如果$csvArr的項目是數組本身,你可能要值implode()到單行

for($nLoop = 0; $nLoop <= $nLine; $nLoop++) 
    echo implode(',', $csvArr[$nLoop]) . "\n"; 
0

請嘗試。

header("Content-type: application/csv"); 

或者在調用WriteCSVFile函數之前檢查是否有任何輸出。如果是這樣會返回錯誤,說不能修改標題信息。