2017-06-30 103 views
-1

我目前正在使用一種工具來幫助修改遊戲,它使用非結構化文件格式,我無法找到一種體面的解析方式。PHP非結構化文件解析器

一個文件的第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,圖像等)不要t需要按照顯示順序排列,例如,value = 2可能是列表中的第一個 - 並且某些對象可能不會使用所有項目(例如,鎖定不總是在那裏)。

  • 多層對象(輸出,事件,輸出,方便用戶)沒有嚴格的限制,可能有10層,有可能僅僅是2

有誰知道任何PHP函數,庫等,它們能夠解析類似的東西?

+0

正則表達式,字符串函數,數組函數 – vaso123

回答

0

該文件並非非結構化 - 實際上它看起來有一個相當嚴格的結構,但我們不知道那個結構是什麼。當然,它不是XML,JSON,YAML或PHP序列化。

有誰知道任何PHP函數庫等

不 - ,問這個問題在這裏讓你的後題外話。

既然你正在尋找一些東西來閱讀這個在PHP中,你大概有一些編程技能。在你嘗試這個之前要問的關鍵問題有:

1)你可以訪問的例子涵蓋了語法的每一個可能的特徵嗎? (在你上面的例子中沒有數組,沒有日期,這些語法經常出現在具有特定語義的語法中)

2)是否存在需要驗證的顯式模式需求(例如,每個對象都必須具有'img'屬性) 。

然後嘗試將語法分解爲標準格式(它看起來BNF對於此處的任務來說已經足夠了)。從那裏開始,實現解析器應該很容易。

+0

從來沒有聽說過BNF,但這有助於理解我正在嘗試做什麼。謝謝 :) – jordsta95