以下是我用于创建mysql数据库的文件示例。分隔符是“,”但在单个列的描述中存在“,”。
Header: City State Zip Description
Los Angeles, California , 98005, "welcome to california, were are living the dream","Please stay, a while."
问题是“引号”中的描述包含一个分隔符,导致文件有其他列。
有人告诉我正则表达式或preg_match函数我可以解决我的问题。有人能告诉我怎么做。
答案 0 :(得分:7)
无需重新发明任何轮子,PHP已经在fgetcsv
中提供了所需的内容答案 1 :(得分:1)
这是一个很好解决的问题,它是CSV(或逗号分隔值)格式的标准。解析CSV的最简单方法是使用已经过测试并可靠运行的CSV库。几乎所有编程语言都存在CSV解析器。有一些你没有想过的特殊情况,所以在大多数情况下使用现有的库是值得的。
此页面是CSV解析的理想资源:
答案 2 :(得分:0)
对于每个字段,您需要一个正则表达式:
("(?:[^"]+|"")*"|[^,]+)
这是两种选择。第一个匹配双引号,后跟另一个备选的零个或多个重复的模式,它是一个非双引号字符串或一对双引号(如果加倍,允许双引号出现在字符串中) 。第二种方法匹配没有双引号的字段,匹配一串非逗号。然后,您将这些与逗号匹配结合起来。