1

我在创建 csv 文件时遇到了问题,因为如果我的数据包含,它,它将被拆分为多个部分并将其放入其他列中,从而破坏我的 csv 文件。

这是示例输出:

示例输出链接

正如您所看到的,TITLE列中的第一行应该从其中"Acer Aspire AS5250-0639 15.5" Laptop (1.65 GHz AMD Dual-Core Processor E-450, 4 GB RAM, 500 GB Hard Drive, DVD+/-RW Optical Drive, Windows 7 Home Premium 64-bit)"开始的数据4 GB RAM被拆分并将其放在其他列中,因为在它之前,还有更多。

到目前为止,这是我的 PHP 脚本:

    <?php
include 'database.php';
$db = new database();

$data = $db->exportdatabase();

$out = '';
$out .= 'GSEQ,BRAND,TITLE,SIMAGE,SPRICE,WEIG,DIMENSIONS,ASIN,CATEGORYNAME,MODELNO';
$out .="\n";

foreach($data as $items){
    $out .=' '.$items['GSEQ'].', '.$items['BRAND'].', '.$items['TITLE'].', '.$items['SIMAGE'].', '.$items['SPRICE'].', '.$items['WEIG'].', '.$items['DIMENSIONS'].' 
    '.$items['ASIN'].', '.$items['CATEGORYNAME'].', '.$items['MODELNO'].'
    ';
    $out .="\n"; 
    //var_dump($items);
}

header('Content-Description: File Transfer');
header("Content-Type: application/csv") ;
header("Content-Disposition: attachment; filename=Data.csv");
header("Expires: 0");
echo $out;
exit;   
?>

我怎么可能解决这个问题?

4

2 回答 2

4

对于初学者,我会停止尝试自己做一些 PHP 可以为您做的事情。使用 fputcsv 而不是自己做:http: //php.net/manual/en/function.fputcsv.php。此方法还处理转义分隔符(逗号)。

最重要的是......不要使用','作为你的csv分隔符。你可能最好使用'|' 作为分隔符,因为该字符不太常见。

于 2013-01-24T09:28:44.127 回答
0

一种方法是使用引号 (") 包裹每个字段

另一种是使用 str_replace 将麻烦的“,”替换为另一个字符。

于 2013-01-24T09:40:05.167 回答