2013-04-18 54 views
0

INI数据是这样的:PHP RAW INI解析器无法解析值正确

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

我使用parse_ini_file()

  • 与​​live.dsn不能被正确解析("mysql:host
  • INI_SCANNER_NORMALlive.dsn值是正确的

但我不能使用INI_SCANNER_NORMAL因为那么它也将取代常数, “上”与1等(不想这样)...有没有任何修复或我必须创建我自己的解析器?

我使用PHP 5.3。

+0

请在问题中添加您的PHP版本。 – hakre

+0

我的意思是在问题内部) – hakre

回答

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树干...


我看,这是在老版本PHP中的错误,看到https://bugs.php.net/bug.php?id=51094。只需升级,那么它应该工作。如果你无法升级,你必须编写自己的ini解析器。

+0

http://3v4l.org/fSZkG –

+0

@OneTrickPony好的,那是一个错误...更新了我的答案。 (我有PHP 5.3.15,第一个版本,它工作xD) – bwoebi

+0

结束使用类似[this](http://www.php.net/manual/en/function.parse-ini-string.php#94192 )。可能慢一点,但似乎我没有选择:( –