PHP RAW INI解析器无法正确解析值

时间:2013-04-18 15:56:24

标签: php parsing ini

INI数据如下所示:

[datasources]
live.dsn   = "mysql:host=localhost;dbname=main"
live.user  = "root"
live.pass  =

我正在使用parse_ini_file()

  • INI_SCANNER_RAW live.dsn的解析不正确("mysql:host
  • INI_SCANNER_NORMAL live.dsn的值是正确的

但我不能使用INI_SCANNER_NORMAL,因为它也会替换常量,“on”与1等等(不要那样)......有没有修复或做我必须创建自己的解析器吗?

我正在使用PHP 5.3。

1 个答案:

答案 0 :(得分:1)

var_dump(parse_ini_string('[datasources]
live.dsn   = "mysql:host=localhost;dbname=main"
live.user  = "root"', false, INI_SCANNER_RAW));

=>

array(2) {
  ["live.dsn"]=>
  string(32) "mysql:host=localhost;dbname=main"
  ["live.user"]=>
  string(4) "root"
}

我无法重现它。 (它也不适用于parse_ini_file。)它适用于PHP 5.3和PHP trunk ...


我发现这是旧版PHP中的一个错误,请参阅https://bugs.php.net/bug.php?id=51094。只需升级,它应该工作。如果你无法升级,你真的必须编写自己的ini解析器。