1

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

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

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

有人告诉我,regex 或 preg_match 函数可以解决我的问题。谁能告诉我怎么做。

4

3 回答 3

7

无需重新发明任何轮子,PHP 在fgetcsv中已经拥有你所需要的

于 2009-04-14T21:34:53.667 回答
1

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

此页面是 CSV 解析的好资源:

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

于 2009-04-14T21:11:35.360 回答
0

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

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

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

于 2009-04-14T21:13:41.487 回答