PHP将字符串转换为数组

时间:2014-09-28 23:19:15

标签: php arrays string

我有一个程序存档,我需要将这个存档的信息作为数组加载到php中。

我可以在字符串中设置存档的信息,但我无法将其转换为数组。

这是字符串:

archivedVars =
{
    ["Default"] = 
    {
        ["Name"] = 
        {
            ["Name1"] = 
            {
                ["@XXXXX"] = 
                {
                    ["show"] = true,
                    ["open"] = true,
                },
            },
            ["Name2"] = 
            {
                ["YYYYY"] = 
                {
                    ["show"] = true,
                    ["open"] = true,
                },
            },
        },
    },
}

如何将此字符串转换为php数组?

1 个答案:

答案 0 :(得分:3)

最好的办法是发现使用的格式和存在的解码库。

如果不这样做,你应该使用例如开发一个合适的解析器。国家机器什么的。

如果结构与您发布的一样,并且结构正确性得到保证,您可以尝试将其转换为可用库可解析的内容,例如: JSON:

$str = preg_replace('#[[]("[^"]+")[]]\\s*=#', '\\1:', $str);
$str = preg_replace('#,(\\s*})#', '\\1', $str);
$str = preg_replace('#archivedVars =#', '', $str);
$arr = json_decode($str, true);

以上(即使您不应该使用regexps解析HTML或结构化数据)也会产生一个可步行数组:

Array
(
    [Default] => Array
        (
            [Name] => Array
                (
                    [Name1] => Array
                        (
                            [@XXXXX] => Array
                                (
                                    [show] => 1
                                    [open] => 1
                                )

                        )

                    [Name2] => Array
                        (
                            [YYYYY] => Array
                                (
                                    [show] => 1
                                    [open] => 1
                                )
                        )
                )
        )
)