用逗号分割字符串而不是在双引号内
我想用逗号分隔以下字符串。
1,"x1",43,"tr","y,7"
结果数组应如下所示。
[
0 => '1',
1 => '"x1"',
2 => '43',
3 => '"tr"',
4 => '"y,7"'
]
简而言之,如果逗号位于引号之间,则不应考虑逗号。
如果我使用爆炸,我会得到以下结果,这是我不想要的。
[
0 => '1',
1 => '"x1"',
2 => '43',
3 => '"tr"',
4 => '"y',
5 => '7"'
]
我被困在这里,请帮忙。
I want to split following string with a comma.
1,"x1",43,"tr","y,7"
Result array should be like following.
[
0 => '1',
1 => '"x1"',
2 => '43',
3 => '"tr"',
4 => '"y,7"'
]
In short, it should not consider comma if it is between quotes.
If I use explode, I will get following result, which I don't want.
[
0 => '1',
1 => '"x1"',
2 => '43',
3 => '"tr"',
4 => '"y',
5 => '7"'
]
I am stuck here, please help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尝试
str_getcsv
:Try
str_getcsv
:以下片段:
产生:
如 ideone 上所示。
正则表达式
,(?=([^"]*"[^"]*")*[^"]*$)
表示:匹配逗号,仅当它有零或偶数时前面的双引号的数量。The following snippet:
produces:
as can be seen on ideone.
The regex
,(?=([^"]*"[^"]*")*[^"]*$)
means: match a comma, only if it has zero, or an even number of double quotes ahead of it.简单的!!您的字符串是 CSV。
使用
$your_array=str_getcsv($your_string);
Easy!! Your string is a CSV.
Use
$your_array=str_getcsv($your_string);