正则表达式用逗号分解CSV数据

时间:2012-08-27 10:20:08

标签: php regex fgetcsv

我的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中使用什么正则表达式来正确获取数据?

2 个答案:

答案 0 :(得分:5)

使用fgetcsv功能,它将为您处理。

您还有str_getcsv,它会将CSV字符串解析为数组。

答案 1 :(得分: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]*)$