CSV 到 MYSQL 解析问题

发布于 2024-09-08 23:43:39 字数 458 浏览 6 评论 0原文

我正在尝试将 .csv 文件解析到 mysql 数据库中,但这并不有趣。

有些行看起来像这样:

"Value", Value, "Value3", ,"Value,Value"

有些行看起来像这样:

Value, Value, , Value, , Value

除了空字段之外,这个 preg_split 效果很好:

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

当我删除了“PREG_SPLIT_NO_EMPTY”,我在 $item 末尾添加了一个额外的空值。 有没有一个正则表达式可以解决这个问题?

I am trying to parse a .csv file into a mysql database, and it's not fun.

Some rows look like this:

"Value", Value, "Value3", ,"Value,Value"

And some look like this:

Value, Value, , Value, , Value

This preg_split worked well except for fields that were empty:

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

When I removed "PREG_SPLIT_NO_EMPTY", I got an extra, empty value added at the end of $item.
Is there a regex expression that would work for this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

開玄 2024-09-15 23:43:39

为什么不使用 LOAD DATA INFILE

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

Why not use LOAD DATA INFILE

Alternatively, use PHP's built in fgetcsv() or str_getcsv() functions rather than messing about with regular expressions trying to reinvent the wheel

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文