PHP解析表/数组字符串

3

你好,Stack Overflow,
这是我的第一个帖子,我有一个问题,需要解析这段文本并将其转换为数组(它来自数据库)。

"TableToKeyValues"
{
    "inventory"
    {
        "slot2"
        {
            "amount"        "10"
            "item"      "wood_plank"
        }
        "slot1"
        {
            "amount"        "10"
            "item"      "metal"
        }
        "slot3"
        {
            "amount"        "10"
            "item"      "plastic"
        }
    }
}

感谢rtm516的帮助。
2个回答

3

我通过多次使用str_replace将其格式化为json,找到了如何完成它的方法。

$inv = preg_replace( "/\r|\n/", "", $inv);
$inv = str_replace('}', '},', $inv);
$inv = str_replace('"       "', '":"', $inv);
$inv = str_replace('"           "', '","', $inv);
$inv = str_replace('"       {', '":{', $inv);
$inv = str_replace('"   {', '":{', $inv);
$inv = str_replace('"{', '":{', $inv);
$inv = trim(preg_replace('/\t+/', '', $inv));
$inv = str_replace('},}', '}}', $inv);
$inv = str_replace('},},', '}}', $inv);
$inv = str_replace('"TableToKeyValues":', '', $inv);
$inv = json_decode($inv, true);

编辑:$inv 是从数据库中获取的值。


0
如果你想将其转换为array,请使用json_decode
$arr = json_decode($dataComingFromDBHERE, true);
print_r($arr);

我以为这是 JSON 数据。这些数据从哪里来?在插入数据库之前。 - aldrin27
一个名为Garry's Mod的游戏使用了Lua函数util.TableToKeyValues - rtm516

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接