CSV到MYSQL解析问题

2 php regex mysql csv

我试图将.csv文件解析成一个mysql数据库,这并不好玩.

有些行看起来像这样:

"价值",价值,"价值3","价值,价值"

有些看起来像这样:

价值,价值,价值,价值

这个preg_split运行良好,除了空字段:

foreach ($row as $item) {
     $item = preg_split( "/[,]*\\\"([^\\\"]+)\\\"[,]*|[,]+/", $item, 0, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
}
Run Code Online (Sandbox Code Playgroud)

当我删除"PREG_SPLIT_NO_EMPTY"时,我在$ item的末尾添加了一个额外的空值.是否有正则表达式适用于此?

Mar*_*ker 8

为什么不使用LOAD DATA INFILE

或者,使用PHP内置的fgetcsv()str_getcsv()函数,而不是弄乱正在尝试重新发明轮子的正则表达式

  • +1.不要编写自己的CSV解析器.这比你想象的要难.你会弄错的. (2认同)