在PHP上处理CSV文件的正确方法

时间:2015-12-29 21:37:04

标签: php csv laravel-5

嗨,我有以下大脑制动的事情。我正在开发一个导入和导出CSV文件的Laravel应用程序。现在,应用程序导入/导出(I / E现在开启)的数据包含来自各种数据类型的字段,我们有文本和数字,现在文本可以包含逗号(,)并使用php上的默认CSV分隔符(,)可能导致导入字段生成错误。客户建议我使用^作为导出的分隔符​​和(,)再次用于导入数据。现在,我的问题是,我可以信任使用默认分隔符的I / E数据吗?任何人都可以建议一个最好的方法来进行I / E过程吗?

修改 客户主要的斗争是因为他在Mac上使用Excel来编辑CSV文件,现在在我的Mac上,我可以轻松编辑文件而不会有任何关于分隔符的问题,当然如果分隔符是逗号(,)但是如果我们使用^作为分隔符然后我的excel是一团糟,他省略了一些字段。

提前致谢。

2 个答案:

答案 0 :(得分:2)

不要重新发明轮子。重复使用经过良好编写的经过良好测试的软件包。好的是来自CSVThe PHP League

(关于分隔符的历史记录:计算中最容易被忽视的(50年以上)特征是ASCII字符集(因此也是UTF8)分配了用于分隔字段(或单元,如它们所称的)和记录的特定字符。 ..甚至记录组和整个文件。请参阅https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text。但是人们没有使用RTM,因此使用逗号等将字段和换行符(\ r,\ n,\ n \ n \ n \ n)分开来分隔记录。 D-oh !!!所以,如果你能够选择自己的分隔符并希望通过使用不用于任何其他目的的char来保证安全,请使用ASCII分隔符。)

答案 1 :(得分:0)

没有" CSV标准"。因此,有一个"默认"逗号并不完全正确。一个人基本上可以使用任何人喜欢的,并且列和行分隔符以及值或完整行的附件实际上取决于您计划作为数据放入的内容。

TL; DR:这完全取决于您和您的客户,您正在使用的那些角色。