PHP:如果数据文本包含“csv”,则创建csv文件&引用;数据将被拆分为多个部分并放在其他列中?

PHP:如果数据文本包含“csv”,则创建csv文件&引用;数据将被拆分为多个部分并放在其他列中?,php,csv,Php,Csv,我在创建csv文件时遇到问题,因为如果我的数据包含,,它将被拆分为多个部分,并放在其他列中,从而破坏我的csv文件 以下是示例输出: 正如您在标题栏中看到的,第一行应该有以下数据“Acer Aspire AS5250-0639 15.5”笔记本电脑(1.65 GHz AMD双核处理器E-450、4 GB RAM、500 GB硬盘驱动器、DVD+/-RW光驱、Windows 7 Home Premium 64位)“从4 GB RAM开始它被拆分并放在其他列中,因为在它之前有,等等 现在,这里是我

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

以下是示例输出:

正如您在
标题
栏中看到的,第一行应该有以下数据
“Acer Aspire AS5250-0639 15.5”笔记本电脑(1.65 GHz AMD双核处理器E-450、4 GB RAM、500 GB硬盘驱动器、DVD+/-RW光驱、Windows 7 Home Premium 64位)“
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;   
?>


我怎样才能解决这个问题呢?

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


除此之外。。不要使用“,”作为csv分隔符。您最好使用“|”作为单独的字符,因为该字符不太常见。

对于初学者,我将不再尝试自己做PHP可以为您做的事情。使用fputcsv而不是自己执行:。此方法还处理转义分隔符(逗号)


除此之外。。不要使用“,”作为csv分隔符。您最好使用“|”作为分隔符,因为该字符不太常见。

一种方法是使用引号(“)将每个字段括起来


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

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


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

如果你投了minvote的票,至少有礼貌地在评论中解释原因。据我所知,我的答案完美地处理了逗号问题。我试图将分隔符改为“|”,但输出变得最糟糕:\@MekeniKine-请更具体一点,当你陈述问题时,“输出变得更糟”实际上是什么意思?您的输出是什么样子的?如果您将分隔符更改为“|”,您还必须在尝试加载文件的应用程序中更改分隔符。例如,如果你在Excel中打开文件,你还必须告诉Excel使用|作为列分隔符。仍然觉得你应该使用fputcsv,但我添加了另一个答案,也应该解决你的问题,尽管这是一个更难看的方法。如果你minvote,至少有礼貌在评论中解释为什么。据我所知,我的答案完美地处理了逗号问题。我试图将分隔符改为“|”,但输出变得最糟糕:\@MekeniKine-请更具体一点,当你陈述问题时,“输出变得更糟”实际上是什么意思?您的输出是什么样子的?如果您将分隔符更改为“|”,您还必须在尝试加载文件的应用程序中更改分隔符。例如,如果您在Excel中打开文件,您还必须告诉Excel使用|作为列分隔符。仍然认为您应该使用fputcsv,但我添加了另一个答案,该答案也可以解决您的问题,尽管这是一个更难看的方法。