处理CSV文件中单个单元格中的换行符

时间:2016-06-09 08:24:48

标签: php csv

我目前正在开发一个web应用程序,它将从CSV文件中获取数据,并将其转换为数组,以便更轻松地访问文件中的特定数据。但是我有一个问题。目前我的代码看起来像这样:

$data = file_get_contents('data.csv');
$array = str_getcsv($data,"\n");
$i = 0;

foreach($array as $row){
     $newArray[$i] = str_getcsv($row,";");
     $i++;
}

这在大多数情况下都可以正常工作,但是当单个值中存在换行符时它会混乱。我正在处理产品描述,因此一些公司在其描述中加入了有意的换行符。当我在Excel中打开文件时,我可以清楚地看到这些换行符,现在我的问题是,如何处理它们?我已经尝试了很多不同的方法,并在线阅读了很多,但似乎没有什么对我有用。

我希望你能帮我找到解决方案。

修改

以下是CSV文件中的示例

5124;“Altid billig el og 5stjernerpåTrustpilot”;“Altid billig el og 5stjernerpåTrustpilot。 @ Vi harkunétproduktog du skalikkelængerespekulerei om du nu har enbilligelleverandørefter6månederlelerlign。 Vigårefteratværeblandtdebilligsteleleverandører,hvilket viogsåbeviserhvertår。“

我不知道它是否有意义,但这就是问题所在。在这个特殊的例子中,当我在excel中打开它时,有一个“强制”换行符,在那里我放置了一个粗体“@”。据我所知,这应该是有效的吗?

1 个答案:

答案 0 :(得分:2)

str_getcsv需要一行的CSV格式文本,您无法使用它来解析整个文件。让fgetcsv逐行读取并解析文件:

$file = fopen('data.csv', 'r');
$data = [];

while ($row = fgetcsv($file)) {
     $data[] = $row;
}

fclose($file);

var_dump($data);