2015-09-23 3 views
0

у меня есть параметр URL-адрес с именем данных, который содержит разделенный запятыми строку с некоторыми заключенную в двойные кавычки, как это:PHP Анализировать разделенных запятыми двойные кавычки

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 
) 

Заранее спасибо!

+0

Это прекрасно работает для меня. Что означает 'var_dump ($ _ GET ['data'])' show? – Barmar

+1

urlencode двойные кавычки при генерации этого url -Because 'link' приведет к тому, что URL-адрес будет отправлен только в качестве 'localhost/index.php? Data = val1, val2, val3,' – developerwjk

+0

Он также может использовать одинарные кавычки вокруг ' href'. – Barmar

ответ

1

Я бы сказал urlencode двойные кавычки при создании этого URL-адреса. Поскольку <a href="localhost/index.php?data=val1,val2,val3,"val4","val5",val6">link</a> приведет к URL вы идете только будучи localhost/index.php?data=val1,val2,val3,

Так как:

echo '<a href="localhost/index.php?data=' . urlencode('val1,val2,val3,"val4","val5",val6') . '">link</a>'; 
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 [ 'данные'] полностью ?. Если да, сделайте так:

$testarr = explode(",", str_replace('"','',$_GET['data'])); 
Смежные вопросы