在PHP中解析ASCII plist文件的简单方法

在PHP中解析ASCII plist文件的简单方法,php,xcode,parsing,plist,Php,Xcode,Parsing,Plist,我正在尝试处理来自遗留系统的数据,该系统似乎处于运行状态。是否有一种简单的方法来解析这些内容或将其转换为更容易处理的格式?理想情况下,输出应该是嵌套数组。(这些文件还用于XCode项目文件和) A存在,但他们的样本失败,即使是苹果的NSDictionary样本:(我的yacc/lex知识不足以快速尝试并修复…(对于任何不带引号的值或键名,它都失败) 苹果的示例文件: { AnimalSmells = { pig = piggish; lamb = lambish; worm = worm

我正在尝试处理来自遗留系统的数据,该系统似乎处于运行状态。是否有一种简单的方法来解析这些内容或将其转换为更容易处理的格式?理想情况下,输出应该是嵌套数组。(这些文件还用于XCode项目文件和)

A存在,但他们的样本失败,即使是苹果的NSDictionary样本:(我的yacc/lex知识不足以快速尝试并修复…(对于任何不带引号的值或键名,它都失败)

苹果的示例文件:

{
    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)代码中看到的一种丑陋的方法是使用正则表达式修改数据,直到其他方法可以解析它


对于链接库:

在中,这可能是问题的一部分:

stringliteral = /\"(\\.|[^\\\"])*\"/
(需要引用字符串)(库似乎是为特定用例编写的,而我的用例似乎与此相去甚远……)

使用编译lexer也会产生不同的源文件,这使得随机修改以查看发生了什么变得很棘手…

它看起来像JSON!你可以试着换个字符串吗

replace=替换为:

替换;使用,

replace;}with}
//分号空间闭合\u卷曲

然后您可以
json\u解码($string)将其放入数组中

如果你觉得有点不舒服,可以试试像这样的图书馆


祝你好运

根据文档,CFPropertyList仅支持二进制和XML plist文件,而不支持OS X(下一步时间范围)之前的ASCII文件…这似乎更有用。。。(非常没有文档记录,但它实际上解析我的数据…以应答格式可能很有用)(json_decode()方法与ascii plist解码器库存在相同的缺陷-需要引用键名和所有值…)