如何在 PHP 中解析列中包含多行数据的 csv

2022-08-30 17:10:29

考虑这样的CSV文件

item1,"description 1"
item2,"description 2"
item3,"description 3
description 3 continues on new line"
item4,"description 4"

应该像这样解析

item1,"description 1"
item2,"description 2"
item3,"description 3 description 3 continues on new line"
item4,"description 4"

有没有办法在具有多行值的PHP中解析此CSV?


答案 1

以下是一些如何做到这一点的工作示例。我正在使用fgetcsv:

字符串变量$CsvString中的 CSV:

$fp = tmpfile();
fwrite($fp, $CsvString);
rewind($fp); //rewind to process CSV
while (($row = fgetcsv($fp, 0)) !== FALSE) {
    print_r($row);
}

文件中的 CSV 文件:

if (($handle = fopen("test.csv", "r")) !== FALSE) {
  while (($row = fgetcsv($handle, 0, ",")) !== FALSE) {
    print_r($row);
  }
  fclose($handle);
}

答案 2

fgetcsv应该能够正确解析它。
无论如何,我不建议手动执行此操作,在解析CSV时有很多这样的陷阱。


推荐