【问题标题】:How can I remove extra commas in a CSV file with php如何使用 php 删除 CSV 文件中的多余逗号
【发布时间】:2014-04-25 00:28:26
【问题描述】:

我正在编写一个 PHP 脚本来将 CSV 文件导入 MySQL 表。

我的问题是字段用逗号分隔,但有些字段在额外的逗号或双引号内(我已经找到了双引号的解决方案),但不是额外的逗号。 这是一个例子:

SORT_COLUMN,SORT_ALPHA,GUEST_NAME,PROFILE_ID,FULL_ADDRESS,IS_TOTAL_YN
0,DIAZ REBOLLO ANGELICA,Diaz Rebollo Angelica,824990,"Blvd. Manuel Avila Camacho 36, piso 10   Lomas de Chapul DF 11000"

您可以在完整地址字段中看到:

"Blvd. Manuel Avila Camacho 36, piso 10   Lomas de Chapul DF 11000"

带有"和36之前的逗号,

这是 PHP 代码的一部分:

$lineseparator = "\n";
foreach(explode($lineseparator,$csvcontent) as $line) {
$lines++;
$line = trim($line," \t");
$line = str_replace("\r","",$line);

    // Here I remove double quotes in the csv file
    $line =  str_replace(""",'',$line);
    $linearray = explode($fieldseparator,$line);
    $linemysql = implode("','",$linearray);
    $query = "insert into $databasetable values('$linemysql');";
    $queries .= $query . "\n";
    @mysql_query($query);
}

【问题讨论】:

  • 我不知道如何在代码中为您提供更多帮助,但我发现此链接可能对您有所帮助。 raamdev.com/2007/…
  • 糟糕!找不到该页面。
  • https://raamdev.com/2007/removing-unwanted-commas-in-a-csv-file-with-php/
  • PHP 具有读取 csv 文件的功能,您不必为此任务编写自己的脚本。

标签: php csv


【解决方案1】:

fgetcsv——它是标准 PHP 库的一部分——是你的朋友。

嗯,大多数时候。当然,请注意$escape 参数,它很奇怪、无用且已损坏。您需要通过 0 (注意:文字整数零,而不是 PHP 中的任何其他零值)来禁用它。

【讨论】:

    【解决方案2】:

    通常,在使用 csv 时,我使用 ; 作为字段分隔符,并使用 \n 作为行分隔符。

    你经常会在田间遇到,,这就是为什么;更适合分开。

    编辑:

    由于您的地址字段包含在" 中,因此您可以使用以下内容:

    $line = '0,DIAZ REBOLLO ANGELICA,Diaz Rebollo Angelica,824990,"Blvd. Manuel Avila Camacho 36, piso 10   Lomas de Chapul DF 11000"';
    
    preg_match('/".*"/', $line, $matches);
    $address = $matches[0];
    
    $data = explode(',', $line);
    
    $data[4] = $address;
    
    var_dump($data);
    

    【讨论】:

    • 我的问题是CSV文件是其他系统生成的,无法修改。另一个想法?
    • 我已经编辑了我的答案,以便满足您的需求。希望对您有所帮助。
    猜你喜欢
    • 2018-05-12
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多