解析带括号的ini文件

Parse ini file with brackets

我有一个包含方括号的 .ini 文件 ( ) 正如 php.net 推荐我 parse.ini 带有 parse_ini_file() 函数的文件,所以假设我的代码看起来像:

$ini = parse_ini_file('files/models.ini');

然后错误看起来像:

Warning: syntax error, unexpected '(' in files/models.ini on line 4 in \index.php on line 48

这是第 4 行的文字

00name1=100 08/82-11/90 (443/445) Typový sešit [V] [27]

问题是我正在从外部站点获取此文件,但我无法更改它,

我从多个站点注意到一些词在 ini 文件中有特殊含义,例如 "null" "true" "no" "yes" 但这种情况并非如此。

所以有人可以告诉我我做错了什么,或者如果这是不可能的,有什么解决方法吗?

您可以使用选项 INI_SCANNER_RAW:

$ini = parse_ini_file('files/models.ini', false, INI_SCANNER_RAW);

来自documentation

If INI_SCANNER_RAW is supplied, then option values will not be parsed.

我的测试结果:

$ php test.php
array(1) {
  ["foo"]=>
  string(9) "foo (bar)"
  ["00name1"]=>
  string(49) "100 08/82-11/90 (443/445) Typový sešit [V] [27]"
}