2

我构建了一个将 CSV 作为批量提要接收的应用程序,当在 Mac 上的 Excel 中保存为“Windows 逗号分隔”与“逗号分隔”时,我注意到 CSV 存在差异。我的脚本只能解析 Windows 版本,我看不到如何在我的代码中克服这个问题。

我发现它们在返回的行中有所不同:http: //cl.ly/image/3x463O3b0A1s

这是 Mac Excel 中的文件类型列表:http: //cl.ly/image/2F110Q1X0V0i

我将它分解成这样的行:

$lines = explode("\n", $content);

使用常规 CSV,它无法识别任何行,但使用 Windows 版本,它可以按预期工作(看图!)。我该如何解决?

4

2 回答 2

3

如前所述,您应该使用fgetcsv()...但是,使用该功能在 Mac 上生成的 CSV 仍然存在问题。

PHP 没有正确检测行尾。为了解决这个问题,我不得不添加ini_set("auto_detect_line_endings", true);到处理 CSV 文件的函数中。

于 2012-10-22T21:01:06.307 回答
0

如评论中所述,使用原生 PHP 函数fgetcsv()str_getcsv()

于 2012-10-22T20:57:20.290 回答