Php/docs/function.parse-ini-file

提供:Dev Guides
< Php
移動先:案内検索

parse_ini_file

(PHP 4, PHP 5, PHP 7)

parse_ini_file設定ファイルをパースする


説明

parse_ini_file ( string $filename [, bool $process_sections = false [, int $scanner_mode = INI_SCANNER_NORMAL ]] ) : array

parse_ini_file() は、 filename で指定した ini ファイルをロードし、 連想配列としてその設定値を返します。

ini ファイルの構造は、php.ini の構造と同じです。


パラメータ

filename

パースしたい ini ファイルのファイル名。 相対パスが指定された場合、 現在のディレクトリから相対的な位置として評価され、 さらに include_path からファイルを探します。

process_sections

process_sections パラメータに true を設定すると、セクション名と設定が含まれた多次元の配列を得ることができます。 デフォルトでは、process_sectionsfalse です。

scanner_mode

INI_SCANNER_NORMAL (デフォルト) あるいは INI_SCANNER_RAWINI_SCANNER_RAW を指定すると、オプションの値はパースされません。

PHP 5.6.1 以降では INI_SCANNER_TYPED も指定できるようになりました。 このモードでは、boolean や null そして integer の型を、可能な限り維持します。 文字列 "true""on" そして "yes"true に変換されます。"false""off""no" そして "none"false だとみなされます。このモードでは、"null"null に変換されます。また数値形式の文字列も、可能な限り integer 型に変換されます。


返り値

成功した場合に設定を連想配列形式で返します。 失敗した場合に false を返します。


例1 sample.ini の内容

; これは設定ファイルのサンプルです。
; php.ini と同様、';' で始まる行はコメントです。

[first_section]
one = 1
five = 5
animal = BIRD

[second_section]
path = "/usr/local/bin"
URL = "http://www.example.com/~username"

[third_section]
phpversion[] = "5.0"
phpversion[] = "5.1"
phpversion[] = "5.2"
phpversion[] = "5.3"

urls[svn] = "http://svn.php.net"
urls[git] = "http://git.php.net"

例2 parse_ini_file() の例

定数 (但し __FILE__ のような "マジカル定数" は除く) も ini ファイル上でパースされます。 そのため、parse_ini_file() をコールする前に ini ファイル上の値として定数を定義した場合、返り値に統合されます。 ini ファイル上の値だけが評価されます。この値は定数でなければなりません。以下は例です:


<?phpdefine('BIRD', 'Dodo bird');// セクションを無視してパースします。$ini_array = parse_ini_file("sample.ini");print_r($ini_array);// セクションを意識してパースします。$ini_array = parse_ini_file("sample.ini", true);print_r($ini_array);?>

上の例の出力は、 たとえば以下のようになります。


Array
(
    [one] => 1
    [five] => 5
    [animal] => Dodo bird
    [path] => /usr/local/bin
    [URL] => http://www.example.com/~username
    [phpversion] => Array
        (
            [0] => 5.0
            [1] => 5.1
            [2] => 5.2
            [3] => 5.3
        )

    [urls] => Array
        (
            [svn] => http://svn.php.net
            [git] => http://git.php.net
        )

)
Array
(
    [first_section] => Array
        (
            [one] => 1
            [five] => 5
            [animal] => Dodo bird
        )

    [second_section] => Array
        (
            [path] => /usr/local/bin
            [URL] => http://www.example.com/~username
        )

    [third_section] => Array
        (
            [phpversion] => Array
                (
                    [0] => 5.0
                    [1] => 5.1
                    [2] => 5.2
                    [3] => 5.3
                )

            [urls] => Array
                (
                    [svn] => http://svn.php.net
                    [git] => http://git.php.net
                )

        )

)

例3 parse_ini_file() による php.ini ファイルのパース

<?php// 以下の結果を比較するための簡単な関数function yesno($expression){    return($expression ? 'Yes' : 'No');}// php.ini へのパスを the php_ini_loaded_file() 関数で取得します// この関数は PHP 5.2.4 以降で使用可能です$ini_path = php_ini_loaded_file();// php.ini をパースします$ini = parse_ini_file($ini_path);// 結果を表示して比較します。get_cfg_var() を使用すると、// ここでパースして読み込んだのと同じ結果が得られることに注意しましょうecho '(parsed) magic_quotes_gpc = ' . yesno($ini['magic_quotes_gpc']) . PHP_EOL;echo '(loaded) magic_quotes_gpc = ' . yesno(get_cfg_var('magic_quotes_gpc')) . PHP_EOL;?>

上の例の出力は、 たとえば以下のようになります。


(parsed) magic_quotes_gpc = Yes
(loaded) magic_quotes_gpc = Yes

例4 ini ファイルの値の補完

定数を評価することに加えて、文字によっては ini ファイルの値として特別な意味を持つものがあります。 さらに、環境変数や以前定義された値は ${} を使って読み取ることができます。


; | は ビット演算の OR
is used for bitwise OR
three = 2|3

; & は ビット演算の AND
four = 6&5

; ^ は ビット演算の XOR
five = 3^6

; ~ は ビット演算の NOT
negative_two = ~1

; () はグループ化に使います
seven = (8|7)&(6|5)

; \ は値のエスケープに使います
newline_is = "\\n" ; results in the string "\n", not a newline character.
with quotes = "She said \"Exactly my point\"." ; Results in a string with quote marks in it.

path = ${PATH}
also_five = ${five}

上の例の出力は、 たとえば以下のようになります。


(parsed) magic_quotes_gpc = Yes
(loaded) magic_quotes_gpc = Yes

注意

注意:

この関数は、php.ini ファイルには何もしません。 このファイルはスクリプトを実行している時には既に処理されています。 この関数は、アプリケーション個有の設定ファイルを読み込む際に使用可能です。

注意:

ini ファイル上の値に英数字ではないものがある場合、 ダブルクォート(")で囲う必要があります。

注意:

ini ファイル上でキーとして使ってはいけない単語があります。 null, yes, no, true, false, on, off, none などです。 null, off, no および false"" となり、 on, yes および true"1" となります。 ただし、INI_SCANNER_TYPED モードを使っている場合 (PHP 5.6.1 以降) は別です。 次の文字 ?{}|&~!()^" は、キーで使ってはいけません。 また、値の中で特別な意味を持ちます。

注意:

等号が含まれないエントリは無視されます。 つまり、"foo" というエントリは無視されますが、 "bar =" は、空の値を持つエントリとして追加されます。 たとえば MySQL の my.cnf には "no-auto-rehash" という設定項目がありますが、この項目には何も値を設定しません。 そのため、この項目は無視されます。

注意:

ini ファイルは、一般的にWebサーバからはプレーンテキストとして扱われます。 よって、ini ファイルにリクエストがあった場合、ブラウザにそのまま表示されます。 これは、セキュリティを考慮すると、 ini ファイルはドキュメントルートの外側に置くか、 Webサーバがそれを返さないように設定を変更しなければならないということです。 そうしないと、セキュリティ上のリスクが発生する可能性があります。

参考