2016-03-08 61 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