PHP将字符串转换为数组
问题描述:
我有一个程序存档,我需要这个存档的信息加载到php中作为数组。PHP将字符串转换为数组
我可以在一个字符串中设置档案的信息,但我不能将其转换为数组。
这是字符串:
archivedVars =
{
["Default"] =
{
["Name"] =
{
["Name1"] =
{
["@XXXXX"] =
{
["show"] = true,
["open"] = true,
},
},
["Name2"] =
{
["YYYYY"] =
{
["show"] = true,
["open"] = true,
},
},
},
},
}
我怎么能这个字符串转换成PHP数组?
答
最好的事情是发现使用的格式和解码库的存在。
如果失败了,你应该开发一个合适的解析器,状态机或其他东西。
如果结构与发布时一样,并且结构的正确性得到保证,您可以尝试将其转换为可用库可解析的内容,例如, JSON:
$str = preg_replace('#[[]("[^"]+")[]]\\s*=#', '\\1:', $str);
$str = preg_replace('#,(\\s*})#', '\\1', $str);
$str = preg_replace('#archivedVars =#', '', $str);
$arr = json_decode($str, true);
以上(即使你永远不应该解析HTML - 或结构化数据 - 用正则表达式),将产生一个适合步行的数组:
Array
(
[Default] => Array
(
[Name] => Array
(
[Name1] => Array
(
[@XXXXX] => Array
(
[show] => 1
[open] => 1
)
)
[Name2] => Array
(
[YYYYY] => Array
(
[show] => 1
[open] => 1
)
)
)
)
)
+0
好工作!我试图弄清楚,但对我来说太快了! – 2014-09-28 23:50:21
+0
THX的信息^^。 – user3358149 2014-09-29 00:05:49
为什么是JSON无效? – 2014-09-28 23:31:06