PHP Parse逗号用双引号分隔字符串

时间:2015-09-23 22:07:32

标签: php arrays string csv

我有一个名为data的url参数,其中包含逗号分隔的字符串,其中一些用双引号括起来,如下所示:

localhost/index.php?data=val1,val2,val3,"val4","val5",val6

我正在尝试解析字符串并将其放入数组中。使用str_getcsv($_GET['data'],',','"');可以得到如下输出:

Array
(
    [0] => val1
    [1] => val2
    [2] => val3
    [3] => 
)

我希望数组看起来像这样:

    Array
(
    [0] => val1
    [1] => val2
    [2] => val3
    [3] => val4
    [4] => val5
    [5] => val6
)

提前致谢!

2 个答案:

答案 0 :(得分:1)

我会说在生成该url时urlencode双引号。由于<a href="localhost/index.php?data=val1,val2,val3,"val4","val5",val6">link</a>会产生网址,因此您只会localhost/index.php?data=val1,val2,val3,

所以喜欢:

echo '<a href="localhost/index.php?data=' . urlencode('val1,val2,val3,"val4","val5",val6') . '">link</a>';

答案 1 :(得分:0)

您是否尝试过使用explode?它会使用您指定的任何分隔符将字符串分隔为数组。

使用您的示例,

$_GET['data'] = 'val1,val2,val3,"val4","val5",val6';
$testarr = explode(",", $_GET['data']);

var_dump($testarr);

输出:

array(6) {
  [0]=>
  string(4) "val1"
  [1]=>
  string(4) "val2"
  [2]=>
  string(4) "val3"
  [3]=>
  string(6) ""val4""
  [4]=>
  string(6) ""val5""
  [5]=>
  string(4) "val6"
}

再次查看您的问题,您似乎可能要完全从$ _GET ['data']中删除"?如果是这样,请执行以下操作:

$testarr = explode(",", str_replace('"','',$_GET['data']));