您好我使用Preg_match_all函数来浏览字符串并返回其值的数组。
$str = 'field1,field2,field3,field4,,,,,,,"some text, some other text",field6';
preg_match_all("~\"[^\"]++\"|[^,]++~", $str,$match);
echo "<pre>";
print_r($match[0]);
echo "<pre>";
返回此内容。
Array
(
[0] => field1
[1] => field2
[2] => field3
[3] => field4
[4] => "some text, some other text"
[5] => field6
)
但我也想让它返回空白的请求帮助。
答案 0 :(得分:1)
编辑:从explode()
更改为str_getcsv()
以修复机箱问题。
我会使用str_getcsv()。它比preg_match_all()更容易阅读和理解,它将完全按照您的意愿执行(它甚至返回空字符串)。
示例:
<?php
$str = 'field1,field2,field3,field4,,,,,,,"some text, some other text",field6';
$results = str_getcsv($str);
print_r($results);
返回:
Array
(
[0] => field1
[1] => field2
[2] => field3
[3] => field4
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] => some text, some other text
[11] => field6
)
答案 1 :(得分:0)
使用~("[^"]*"|[^,]*)(,|)~
实际上会做你需要的,除了它总是在末尾有一个空字符串(因为那是一个空字符串),它会在matches数组中添加2个组。
答案 2 :(得分:-2)
我认为你也可以使用爆炸。
my_array = explode (',', $str);
注意:“某些文本,其他一些文本”将在数组的2个单元格中分开。