Существует ли функция PHP для преобразования строки запроса в массив?

#php #arrays #string #foreach

#php

Вопрос:

Я в основном ищу противоположное http_build_query() .

У меня есть следующее в виде строки:

 foo=baramp;bar[var]=foo
 

И я хочу, чтобы следующее (чтобы перейти в http_build_query ):

 array(
    'foo' => 'bar',
    'bar' => array(
         'var' => 'foo',
    )
)
 

Ответ №1:

Вы хотите parse_str() . Передайте ему массив в качестве 2-го параметра, и он извлечет переменные из строки запроса, которую вы ему передаете, в массив:

 <?php
$str = "first=valueamp;arr[]=foo baramp;arr[]=baz";

parse_str($str, $output);

print_r($output);

/*
Array
(
    [first] => value
    [arr] => Array
        (
            [0] => foo bar
            [1] => baz
        )

)
*/
 

Обратите внимание, что это самая первая связанная функция, указанная на http_build_query странице.

Комментарии:

1. Краткое примечание: предоставление второго параметра (в этом примере $output ) является обязательным, начиная с PHP 7.2.

Ответ №2:

Может быть, это сработает. parse_str 2-й параметр, обязательный для PHP 7.2

 parse_str(urldecode($builded_content), $output)

print_r($output)