使用带符号的 PHP 解析 ini 文件

Parse ini file using PHP with symbol

您好,我需要使用 php 解析如下所示的 ini 文件,该文件基本上是使用 Qt QSettings, I have tried the code here 创建的,但似乎 INI 文件的格式不同。

是否可以使用 PHP 解析以下格式的 INI 文件?

[General]
Address=
Email=test@gmail.com
Password=123$
Sync=0
Loggedin=1


[Drives]
1\drive=/
1\free=281
1\size=908
2\drive=/media/New_Volume
2\free=6
2\size=7
3\drive=/media/sdb2
3\free=906
3\size=916
size=2


[Cam]
1\detection=0
1\Area.height=2.4
1\Area.width=9.5
2\detection=0
2\Area.height=2.4
2\Area.width=9.5
3\detection=0
3\Area.height=2.4
3\Area.width=9.5
size=2

更新:

实际上上面的 ini 是按照下面的答案工作的,我的 actyual ini 包含 $ 符号,这就是造成问题的原因。

 [General]
    Address=
    Email=test@gmail.com
    Password=123$
    Sync=0
    Loggedin=1


    [Drives]
    1\drive=/
    1\free=281
    1\size=908
    2\drive=/media/New_Volume
    2\free=6
    2\size=7
    3\drive=/media/sdb2
    3\free=906
    3\size=916
    size=2


    [Cam]
    1\detection=0
    1\Area.height=2.4
    1\Area.width=9.5
    2\detection=0
    2\Area.height=2.4
    2\Area.width=9.5
    3\detection=0
    3\Area.height=2.4
    3\Area.width=9.5
    size=2

而且我似乎必须转义 $ 符号。

它工作得很好,看看 php 代码,而 .ini 文件保持原样。

$ini_array = parse_ini_file("settings.ini",true);
print_r($ini_array);

//will output
Array
(
    [General] => Array
        (
            [Address] =>
            [Email] => test@gmail.com
            [Password] => 123$ // note the $ sign in value here
            [Sync] => 0
            [Loggedin] => 1
        )

    [Drives] => Array
        (
            [1\drive] => /
            [1\free] => 281
            [1\size] => 908
            [2\drive] => /media/New_Volume
            [2\free] => 6
            [2\size] => 7
            [3\drive] => /media/sdb2
            [3\free] => 906
            [3\size] => 916
            [size] => 2
        )

    [Cam] => Array
        (
            [1\detection] => 0
            [1\Area.height] => 2.4
            [1\Area.width] => 9.5
            [2\detection] => 0
            [2\Area.height] => 2.4
            [2\Area.width] => 9.5
            [3\detection] => 0
            [3\Area.height] => 2.4
            [3\Area.width] => 9.5
            [size] => 2
        )

)