0

我遇到了一个不寻常的场景,我需要将查询字符串转换为数组。

查询字符串如下所示:

?sort%5B0%5D%5Bfield%5D=type&sort%5B0%5D%5Bdir%5D=desc

解码为:

sort[0][field]=type&sort[0][dir]=desc

如何将它作为可用数组放入我的 PHP 中?IE

echo $sort[0][field] ; // Outputs "type"

我试过邪恶的 eval() 但没有运气。


我需要更好地解释一下,我需要的是 sort%5B0%5D%5Bfield%5D=type&sort%5B0%5D%5Bdir%5D=desc 的文字字符串进入我的脚本并存储为变量,因为它将是在函数中作为参数传递。

我怎么做?

4

2 回答 2

2

PHP 会为您将该格式转换为数组。

header("content-type: text/plain");
print_r($_GET);

给出:

Array
(
    [sort] => Array
        (
            [0] => Array
                (
                    [field] => type
                    [dir] => desc
                )

        )

)

如果您的意思是将该字符串作为字符串而不是作为查询字符串输入到您的网页中,请使用该parse_str函数对其进行转换。

header("content-type: text/plain");
$string = "sort%5B0%5D%5Bfield%5D=type&sort%5B0%5D%5Bdir%5D=desc";
$array = Array();
parse_str($string, $array);
print_r($array);

…给出相同的输出。

于 2013-01-10T14:40:21.053 回答
0

使用 parse_str()

http://php.net/manual/en/function.parse-str.php

<?php
$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str);
vecho $first;  // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz


parse_str($str, $output);
echo $output['first'];  // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz

?>
于 2013-01-10T14:45:09.123 回答