PHP非结构化文件解析器

时间:2017-06-30 11:07:15

标签: php parsing

我目前正在研究一种帮助修改游戏的工具,它使用的是非结构化文件格式,我无法找到一种合适的解析方法。

文件的1个对象的示例,需要解析:

object = {
    id = id_1
    image = IMG_image_1
    require = { 
        id = id_2
    }
    priority = 1
    value = 2
    time = 10
    locked = yes
    output = {
        EVENT = {
            OUTPUT = { 
                USER = { 
                    reward = custom_reward
                }
                reward = all_players_reward
                bonus_reward = {
                    type = money
                    amount = 100
                    instant = yes
                }
            }
        }
    }
}

问题是:

  • 对象中的项目(id,图像等)不需要按显示的顺序排列,例如,value = 2可能是列表中的第一个 - 并且某些对象可能不要使用所有物品(例如锁定并不总是存在)。

  • 多层对象(输出,EVENT,OUTPUT,USER)没有严格限制,可能有10层,可能只有2层。

有没有人知道任何可以解析这样的PHP函数,库等?

1 个答案:

答案 0 :(得分:0)

该文件不是非结构化的 - 实际上看起来具有相当严格的结构,但我们不知道该结构是什么。当然它不是XML,JSON,YAML或PHP序列化。

  

有没有人知道任何PHP函数,库等

不 - 并且在这里提出这个问题会使你的帖子脱离主题。

由于您正在寻找可以在PHP中阅读的内容,因此您可能拥有一些编程技巧。在尝试之前要问的关键问题是:

1)您可以访问的示例涵盖语法的每个可能功能吗? (在上面的示例中,没有数组,没有日期经常出现在具有特定语义的语法中)

2)您是否需要验证明确的架构要求(例如,每个对象都必须具有' img'属性)。

然后尝试将语法分解为标准形式(看起来BNF对于此处的任务来说已经足够了)。从那里开始,实现解析器应该很容易。