一个字符串中的分隔符

时间:2009-04-14 21:05:30

标签: php regex preg-match delimiter

以下是我用于创建mysql数据库的文件示例。分隔符是“,”但在单个列的描述中存在“,”。

Header: City State Zip Description
Los Angeles, California , 98005, "welcome to california, were are living the dream","Please stay, a while."

问题是“引号”中的描述包含一个分隔符,导致文件有其他列。

有人告诉我正则表达式或preg_match函数我可以解决我的问题。有人能告诉我怎么做。

3 个答案:

答案 0 :(得分:7)

无需重新发明任何轮子,PHP已经在fgetcsv

中提供了所需的内容

答案 1 :(得分:1)

这是一个很好解决的问题,它是CSV(或逗号分隔值)格式的标准。解析CSV的最简单方法是使用已经过测试并可靠运行的CSV库。几乎所有编程语言都存在CSV解析器。有一些你没有想过的特殊情况,所以在大多数情况下使用现有的库是值得的。

此页面是CSV解析的理想资源:

http://www.creativyst.com/Doc/Articles/CSV/CSV01.htm

答案 2 :(得分:0)

对于每个字段,您需要一个正则表达式:

("(?:[^"]+|"")*"|[^,]+)

这是两种选择。第一个匹配双引号,后跟另一个备选的零个或多个重复的模式,它是一个非双引号字符串或一对双引号(如果加倍,允许双引号出现在字符串中) 。第二种方法匹配没有双引号的字段,匹配一串非逗号。然后,您将这些与逗号匹配结合起来。