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

16 浏览
0 Comments

处理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 5 stjerner på Trustpilot\";\"Altid billig el og 5 stjerner på Trustpilot.@

Vi har kun ét produkt og du skal ikke længere spekulere i om du nu har en billig elleverandør efter 6 måneder eller lign. Vi går efter at være blandt de billigste elleverandører, hvilket vi også beviser hvert år。\"

我不知道这是否有意义,但这就是问题所在。在这个特定的例子中,当我在Excel中打开它时,存在“强制”换行符,在我放置粗体“@”的位置。据我所见,这应该是有效的?

admin 更改状态以发布 2023年5月21日
0
0 Comments

str_getcsv函数期望一个CSV格式的文本数据的一行,不能用于解析整个文件。应该使用fgetcsv函数逐行读取并解析文件:

$file = fopen('data.csv', 'r');
$data = [];
while ($row = fgetcsv($file)) {
     $data[] = $row;
}
fclose($file);
var_dump($data);

0