【发布时间】:2016-10-09 18:53:38
【问题描述】:
我目前正在开发一个 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 6 måneder eller lign。 Vi går efter at være blandt de billigste elleverandører, hvilket vi også beviser hvert år。"
我不知道这是否有意义,但这就是问题所在。在这个特定的例子中,当我在 excel 中打开它时,有一个“强制”换行符,我在其中放置了一个粗体“@”。据我所知,这应该是有效的?
【问题讨论】:
-
只是好奇:CSV 文件有效吗?包含换行符的值周围是否有双引号?你没有举个例子,所以我不能说。
-
我现在在帖子中添加了一个示例。 @KIKOSoftware
-
我认为 CSV 格式中不允许值内的换行符。例如,此页面:edoceo.com/utilitas/csv-file-format 以 每条记录为一行 开头。更多细节在这里:ietf.org/rfc/rfc4180.txt
-
您可以导出不同设置的数据吗? Excel 处理与其他 csv 处理程序不同。 stackoverflow.com/questions/1241220/…
-
@KIKO Err... 该页面上的第一个要点:“每条记录是一行 - 行分隔符可以是 LF (0x0A) 或 CRLF (0x0D0A),一行分隔符也可以嵌入到数据中(使记录多于一行但仍然可以接受)。"