[PHP] iniファイルを読み込む方法

スポンサーリンク

PHPiniファイル(設定ファイル)を読み込む場合は、 あらかじめ用意されている parse_ini_file()関数を使うと簡単です。 ここではiniファイルの読み込み方法や複数行にわたる値の取得についても紹介します。

PHPでiniファイルを読みこむ

parse_ini_file()の書式は次の通りです。


// セクションを意識してパース
$arr = parse_ini_file("test.ini", true);

// セクションを無視してパース
$arr = parse_ini_file("test.ini");

次のような「test.ini」ファイルを読み込みます。

[first]
color = red
url = "https://sample.com"

[second]
color = blue
url = "https://sample2.com"

セクションを意識して読み込む

iniファイルのセクションを意識して読み込む場合は第2引数に true を指定します。


// セクションを意識してパース
$arr_ini = parse_ini_file("test.ini", true);

echo $arr_ini["first"]["color"] . "\n";

print_r($arr_ini);

実行結果

red

Array
(
    [first] => Array
        (
            [color] => red
            [url] => https://sample.com
        )

    [second] => Array
        (
            [color] => blue
            [url] => https://sample2.com
        )

)

セクションを無視して読み込む

iniファイルのセクションを無視して読み込んだ場合は、 同じパラメータの値が上書きされます。


// セクションを無視してパース
$arr_ini = parse_ini_file("test.ini",);

print_r($arr_ini);

実行結果

Array
(
    [color] => blue
    [url] => https://sample2.com
)

複数行にわたる値は取得できる?

iniファイルに複数行の値を記述した場合、 ちゃんと取得できるかを検証します。


[first]
color = red
multi = "1行目
2行目"

[second]
color = blue
multi = 1行目
2行目

PHPコード


// セクションを意識してパース
$arr_ini = parse_ini_file("test.ini", true);

print_r($arr_ini);

実行結果を見ればわかるとおり、""で括っている場合は問題なく取得できます。

実行結果

Array
(
    [first] => Array
        (
            [color] => red
            [multi] => 1行目
2行目
        )

    [second] => Array
        (
            [color] => blue
            [multi] => 1行目
        )

)

""(ダブルクォーテーション)を取得したい場合

例えば「これは"サンプル"です。」のような、 ダブルクォーテーションを含む文字列を取得したい場合、 次のように全体を '(シングルクォーテーション)で囲むと取得できます。


[first]
color = red
str = 'これは"サンプル"です。'

実行結果

Array
(
    [first] => Array
        (
            [color] => red
            [str] => これは"サンプル"です。
        )

)