将html输入数组字符串转换为php数组?

时间:2014-01-23 19:13:14

标签: php parsing for-loop input

在PHP中,是否存在从一个不同大小的字符串构建数组的方式或循环?

例如,我想转换

$str1 = "page[1][name]";
$str2 = "content[1][language][2][name]";

str1的预期输出:

$page = array
    1:
       name

str2的预期输出:

$content = array
    1:
       language
             2:
                name

但我需要它与构建数组的功能相同,无论多少[]维度。

我在想这样的事情:

$tmp = explode("[", $str1);
$arr = (array)$tmp[0];
for ($i=0; $i<count($tmp)-1; $i++) {
    $arr[$i] = array();
        .....
        .....
}

但我有点卡在那里,我认为它需要更多的递归函数方法

1 个答案:

答案 0 :(得分:4)

您的输入看起来很像查询字符串,如果是,您可以使用parse_str()解析它。

示例:

$str1 = "page[1][name]";
$str2 = "content[1][language][2][name]";

parse_str($str1, $v);
print_r($v);

parse_str($str2, $v);
print_r($v);

输出是您所期望的:

Array
(
    [page] => Array
        (
            [1] => Array
                (
                    [name] =>
                )
        )
)
Array
(
    [content] => Array
        (
            [1] => Array
                (
                    [language] => Array
                        (
                            [2] => Array
                                (
                                    [name] =>
                                )
                        )
                )
        )
)