在PHP中解析带有转义字符的CSV文件

在PHP中解析带有转义字符的CSV文件,php,csv,escaping,google-docs,Php,Csv,Escaping,Google Docs,我正在尝试使用Google Docs电子表格作为一个非常简单的项目的数据库,我觉得我现在有了一个工作版本,基于yc对这个问题的回答: 我的问题是,现在我到了可能需要处理转义字符的地方。我不知道是否有CSV的标准实现,或者不同程序的CSV实现有所不同,但Google Docs正在做的是: 如果我有以下源数据(a、b、c、d、e表示5个单独的列) 然后生成以下行: a,b,c,"d1, d2, d3, d4","e1, e2, ""e3, e4"", e5, ""e6""" 据我所知,如果它发现

我正在尝试使用Google Docs电子表格作为一个非常简单的项目的数据库,我觉得我现在有了一个工作版本,基于yc对这个问题的回答:

我的问题是,现在我到了可能需要处理转义字符的地方。我不知道是否有CSV的标准实现,或者不同程序的CSV实现有所不同,但Google Docs正在做的是:

如果我有以下源数据(a、b、c、d、e表示5个单独的列)

然后生成以下行:

a,b,c,"d1, d2, d3, d4","e1, e2, ""e3, e4"", e5, ""e6"""
据我所知,如果它发现了什么东西并逃逸了“As”,它会将整个字段包装在“field”中。也许我们只需要将“unscape”“into”和将字段从“field”展开到字段中

有没有办法在PHP中解析这个版本的CSV?如果真的很难,我仍然知道如何替换Google文档中的字符,并将它们发布到不同的页面上,但我希望可以用一个简单的PHP函数来解决这个问题

另一种解决方案:可能只获取RSS或ATOM格式的XML要容易得多,但我不知道如何解析这些格式。

使用引号本身作为转义字符,类似于:

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

如果你从文件或网络流中解析,也考虑使用../p>你能将数据的输入限制到谷歌DOC电子表格吗?您可以对转义字符执行

preg_replace
,但从您的代码中,我们无法真正判断从google文档返回的确切内容。您的意思是,如果是我的还是第三方来源?是的,它是我的,我用它作为一种最小的数据库。我也不知道转义是如何为谷歌文档工作的。但是,如果字段中有逗号,它会在整个字段周围加一个“”。如果有的话,我会用“.”来逃避它。@zsero我在12月份做了一个类似于你的项目……如果我没记错的话,你正在使用YQL作为“钩子”对吧?你是手动插入数据吗?@kjy112不,最后我选择了没有JS的纯服务器端PHP。但这似乎不是很难,我认为我们只需要取消“挂接”即可和“字段”到字段。感谢这个函数,它正是我所需要的。小问题是它需要PHP5.3+,但幸运的是我可以使用官方页面上的一条评论。
$array = str_getcsv($str, ',', '"', '"');