1

我的CSV 文件中有以下

,1,193,23 Video,,"Slotsgade 2, 2.th",,,,,,Copenhagen N,,DK-2200,Denmark,,,,,,,,
,,,Europe,+45 31450980,,info@23company.com,www.23video.com,,,,,,,,Cabsat Online
 Video Industry Sourcebook 12,Mr.,Kristoffer,,Schou,,M,,,,,,,,,,,,,,,,,,,,,,,,,
,,,schou@23company.com,,,,,,,

如你看到的

"Slotsgade 2, 2.th"

中间有一个逗号,现在我用preg_split它来分解列中的行。

谁能建议我一个在双引号之间跳过逗号的正则表达式

我已经尝试过了:

/,|".*(?=")/      

preg_split我可以用来正确获取数据的正则表达式是什么?

4

2 回答 2

5

使用fgetcsv函数,它会为您处理。

而且你还有str_getcsv,它将一个 CSV 字符串解析成一个数组。

于 2012-08-27T10:22:05.297 回答
0

来自RegexBuddy的图书馆:

CSV:任何字段

匹配 CSV 文件中的任何单个字段。使用此正则表达式遍历所有字段。

"[^"\r\n]*"|[^,\r\n]*

CSV:任何带有额外空格的字段

匹配 CSV 文件中的任何单个字段。使用此正则表达式遍历所有字段。在正则表达式匹配中的双引号字段之前和之后包括额外的空格。

[ \t]*+"[^"\r\n]*+"[ \t]*+|[^,\r\n]*+

CSV:完整行,所有字段

匹配每行有 3 个字段的逗号分隔文件中的完整行,将每个字段捕获到反向引用中。要将 CSV 行与更多或更少的字段匹配,只需复制或删除捕获组。

^("[^"\r\n]*"|[^,\r\n]*),("[^"\r\n]*"|[^,\r\n]*),("[^"\r\n]*"|[^,\r\n]*)$
于 2012-08-27T10:36:09.967 回答