2011-03-10 81 views
0

我试图使用Google Docs电子表格作为一个非常简单的项目的数据库,并且现在基于yc对此问题的回答,我感觉我现在有一个工作版本: 在PHP中使用转义字符解析CSV文件

我的问题是,现在我到达了可能需要对转义字符执行某些操作的地方。我不知道是否有CSV的标准实施或程序到程序的不同,但这里是Google Docs正在做的事情:

如果我有以下源数据(a,b,c,d, Ë这意味着5个独立的列)

a  b  c  d1, d2, d3, d4  e1, e2, "e3, e4", e5, "e6" 

然后它产生以下行:

a,b,c,"d1, d2, d3, d4","e1, e2, ""e3, e4"", e5, ""e6""" 

据我了解,它包装的整个领域中的“场”,如果它发现的东西,逃脱了“作为“”,也​​许我们只需要将“”变成“”,并将该字段从“字段”解包到字段中。

有没有什么办法可以在PHP中解析此版本的CSV?如果真的很难,我仍然有一个想法,如何替换Google文档中的字符,并将它们发布到不同的工作表上,但我希望可以通过简单的PHP函数解决它。

替代解决方案:也许只是以RSS或ATOM格式获取XML更容易,但我不知道如何解析这些格式。

+0

您是否可以将数据输入限制在Google文档电子表格中?您可以对escape字符执行'preg_replace',但是从您的代码中,我们无法确切知道从Google文档返回的是什么。 – kjy112 2011-03-10 17:31:21

+0

你的意思是说,如果它是我的或第三方来源?是的,它是我的一个最小数据库。 – zsero 2011-03-10 17:36:40

+0

我无法分辨Google Docs的转义工作。但是,看起来如果这个领域有任何逗号,它就会在整个领域中出现一个“”。如果有任何“,它逃脱它”“。 – zsero 2011-03-10 17:38:25

回答

0

使用str_getcsv,使用引号本身作为转义字符,像:

$array = str_getcsv($str, ',', '"', '"'); 

如果从一个文件或网络流解析,也可以考虑使用fgetcsv

+0

感谢这个功能,它只是做我需要的。小问题是它需要PHP 5.3+,但幸运的是我可以使用官方页面中的一条评论。http://th2.php.net/manual/en/function.str-getcsv.php#88311 – zsero 2011-03-10 18:42:11