【问题标题】:escape comma and add new column while creating a csv file在创建 csv 文件时转义逗号并添加新列
【发布时间】:2017-04-28 06:24:45
【问题描述】:

我正在将 Delimited FLAT 文件转换为 CSV,它有一些数据在它们之间以逗号形式存在。例如产品名称 Iphone 6splus, 32 gb。因为这是对产品的描述,也可以有特殊字符。我如何转义逗号,因为fputcsv 正在将此数据视为新行。这是错误的。我正在使用

$handle = fopen("data.txt", "r");
$lines = [];
$row_count=0;
if (($handle = fopen("data.txt", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, "\t")) !== FALSE) {
        if($row_count>0)
        {
                    $lines[] = $data;
        }
        $row_count++;
    }
    fclose($handle);
}
$fp = fopen('example.csv', 'w');
foreach ($lines as $line) {
    fputcsv($fp, split('\*\*', $line));
}
fclose($fp);

在开始转换数据并存储到 csv 之前,我需要转义该值

【问题讨论】:

    标签: php regex csv


    【解决方案1】:

    用引号将字段括起来,例如

    field1_value,field2_value,"field 3,value",field4, etc...
    

    要对引号进行编码,使用",字段中的单引号符号将被编码为"",整个字段将变为""""。因此,如果您在例如Excel中看到以下内容:

    ---------------------------------------
    | regular_value |,,,"|  ,"", |"""   |"|
    ---------------------------------------
    

    CSV 文件将包含:

    regular_value,",,,""",","""",","""""""","""" 逗号只是用引号封装,所以,变成“,”。

    一个命令和引用需要被封装和引用,所以","变成了""","""。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-25
      • 1970-01-01
      • 2017-09-25
      • 2012-05-14
      • 2019-07-20
      • 2014-12-31
      • 2017-02-09
      相关资源
      最近更新 更多