我目前正在开发一个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中打开它时,有一个“强制”换行符,在那里我放置了一个粗体“@”。据我所知,这应该是有效的吗?
答案 0 :(得分:2)
str_getcsv
需要一行的CSV格式文本,您无法使用它来解析整个文件。让fgetcsv
逐行读取并解析文件:
$file = fopen('data.csv', 'r');
$data = [];
while ($row = fgetcsv($file)) {
$data[] = $row;
}
fclose($file);
var_dump($data);