2016-03-08 60 views
0

我一直在試圖將MySQL字段導出爲CSV,並且除了包含HTML的字段外,可以正確導出它們。HTML to CSV PHP

我的MySQL表由如下:

名稱:地址:簡介:

名稱是簡單的文本與地址,但配置文件是HTML

我的數組是:

$array = array (array ("Name" => "$name", "Address" => "$address", "Profile" => $profile) 
); 

製造使用:

$name = $info['name']; 
$address = $info['address']; 
$profile = $info['profile']; 

我有一個「Tab」\ t分隔符,並且每個導出到CSV都能正確禁止HTML,我希望保留它作爲純HTML,但在一個Excel字段中,此時正在分割成多行和多個字段。

CSV代碼如下:

header("Content-type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=$filename"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 

$titleArray = array_keys($array[0]); 
$delimiter = "\t"; 
$filename="profiles.xls"; 
foreach ($array as $subArrayKey => $subArray) { 
$dataRowString = implode($delimiter, $subArray); 
    print $dataRowString . "\r\n"; 
} 

任何幫助或提醒會非常歡迎。

回答

1

您需要轉義字段值。您可以使用fputcsv

$stdout = fopen('php://stdout', 'w'); 
fputcsv($stdout, $subArray, "\t"); 

$filename="profiles.xls"; 
header("Content-type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=$filename"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 

$titleArray = array_keys($array[0]); 
$delimiter = "\t"; 
$stdout = fopen('php://stdout', 'w'); 
foreach ($array as $subArrayKey => $subArray) { 
    fputcsv($stdout, $subArray, $delimiter); 
} 
+0

嗨,也許我的頭一直在這個長,你能解釋一下上面我已經修改,並把上面的,如果你的編碼在我的CSV代碼的一部分不介意。? – Mathew

+0

當然,沒問題,看到更新的答案。我還看到你的代碼中有一個小錯誤,頭文件中使用'$ filename',但稍後定義。我把它搬起來了。 – Halcyon

+0

獲取500內部服務器錯誤。 :( – Mathew