2017-07-25 79 views
0

ASCII文件的plist簡單的方法,我試圖處理從遺留系統,這似乎是在ASCII plist format數據。有沒有簡單的方法來解析這些或將它們轉換爲更容易處理格式?理想情況下,輸出應該是嵌套數組。 (這些文件也被GNUstep和XCode項目文件)解析PHP中

一個library存在,但他們的樣品與NSDictionary中的蘋果樣品甚至失敗:(我的yacc /法知識不足以迅速嘗試和解決這個問題。 ..)(它失敗對於任何帶引號的值或鍵名)

蘋果的樣本文件:

{ 
    AnimalSmells = { pig = piggish; lamb = lambish; worm = wormy; }; 
    AnimalSounds = { pig = oink; lamb = baa; worm = baa; 
        Lisa = "Why is the worm talking like a lamb?"; }; 
    AnimalColors = { pig = pink; lamb = black; worm = pink; }; 
} 

可用庫的plist文件似乎只支持XML和二進制的plist文件,而不是ASCII的。

在一個地方解析來自一個遺留系統的一些輸出實現全庫似乎有點小題大做......

在其他一些(非PHP)看到的醜陋的做法是我見過的代碼,是使用正則表達式來修改數據,直到其他方法可以解析它。


對於鏈接庫:

Lexer,這是問題的可能的部分:

stringliteral = /\"(\\.|[^\\\"])*\"/ 

(需要字符串,不得轉載)(庫似乎被寫入對於特定的使用情況,以及我的使用情況似乎很遠從...)

編譯與plex也導致不同的源FIL詞法分析器e,這使得隨機修改看到會發生什麼棘手的...

回答

0

差不多看起來像JSON!你可以嘗試做一個字符串替換?

replace = with :
replace ; with ,
replace ; } with } //分號空間closed_curly

然後你可以json_decode($string);它到一個數組中!

如果感覺哈克給你,嘗試庫如https://github.com/rodneyrehm/CFPropertyList

祝你好運!

+0

CFPropertyList只支持二進制和XML的plist文件,根據文件,不預OS X(NEXTSTEP的時間表)ASCII的... –

+1

啊!那麼你可能想要這個https://github.com/chobie/php-plist – delboy1978uk

+0

這似乎更有用...(非常未記錄,但它實際上解析我的數據...在答案格式可能是有用的) –