忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

PHP INIファイル(初期設定用)の読込について(parse_ini_file)


PHP においても Windows の様にINIファイルを読込んで設定値として利用できる関数があります。

それが parse_ini_file で関数の引数にINIファイルのファイル名を指定すれば、INIファイルの中身を全て配列として返してきます。 Windows のINIファイル用の API と較べれば非常に簡単です。



本の紹介では...
PHP8の基本構文から、クラス、DB連携、セキュリティ対策まで、しっかり習得。
PHPプログラミングの標準教科書『独習PHP』が、最新のPHP8に対応。
PHPでWebページ/アプリケーションを開発する際に必要な基礎的な知識、
PHPの基本構文から、クラス、データベース連携、セキュリティまで、詳細かつ丁寧に解説します。
...


parse_ini_file の使用例

関数定義は以下の通りです。

1
2
3
4
5
6
7
8
9
10
11
12
//  関数定義
array parse_ini_file ( string $filename [, bool $process_sections = false
                       [, int $scanner_mode = INI_SCANNER_NORMAL ]] )
[引数]
$filename           ini ファイル指定
$process_sections   TRUE を設定するとセクション名と設定が含まれた多次元の配列を得ることができます
$scanner_mode       INI_SCANNER_NORMAL (デフォルト) または INI_SCANNER_RAW を指定すると、
                    オプションの値はパースされません。
                    PHP 5.6.1 以降では INI_SCANNER_TYPED も指定でき、
                    boolean や null そして integer の型を、可能な限り維持します
 
[返り値]           成功した場合に設定を連想配列形式で返します。 失敗した場合に FALSE を返します。

それでは以下のINIファイルを読込んでみます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
; これはテストINIファイルです。[test.ini]
[section1]
data1 = 1
data2 = 1000
data3 = abcde
 
[section2]
string1 = "aaa123"
string2 = "bbbbb11"
 
[section3]
array1[] = "100"
array1[] = "200"
array1[] = "300"
 
array2["test1"] = "test1aaa"
array2["test2"] = "test2bbbbb"


以下にセクションを意識する指定と、そうでない指定で行ってみます。

1
2
3
4
5
6
7
8
<?php
// $process_sections 未指定
$arr = parse_ini_file("test.ini");
print_r($arr);
// $process_sections 指定
$arr = parse_ini_file("test.ini", true);
print_r($arr);
?>

実行結果は以下の様に表示されます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Array
(
    [data1] => 1
    [data2] => 1000
    [data3] => abcde
    [string1] => aaa123
    [string2] => bbbbb11
    [array1] => Array
        (
            [0] => 100
            [1] => 200
            [2] => 300
        )
 
    [array2] => Array
        (
            [test1] => test1aaa
            [test2] => test2bbbbb
        )
 
)
Array
(
    [section1] => Array
        (
            [data1] => 1
            [data2] => 1000
            [data3] => abcde
        )
 
    [section2] => Array
        (
            [string1] => aaa123
            [string2] => bbbbb11
        )
 
    [section3] => Array
        (
            [array1] => Array
                (
                    [0] => 100
                    [1] => 200
                    [2] => 300
                )
 
            [array2] => Array
                (
                    [test1] => test1aaa
                    [test2] => test2bbbbb
                )
 
        )
 
)

セクションを指定すると、セクション毎に配列となり、セクション以下は更にその中の配列になっています。


parse_ini_file の使用例その2

私のPHPは PHP Version 5.6.28 ですので、第3引数を INI_SCANNER_TYPED の指定を行い実行してみます。
内部的に文字列なのか、数値なのかが分かりにくいので出力は var_dump を使います。

1
2
3
4
5
<?php
// $process_sections 指定
$arr = parse_ini_file("test.ini", true, INI_SCANNER_TYPED);
var_dump($arr);
?>

実行結果は以下の様に表示されます。数値として判断できるデータは数値になっています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
array(3) {
  ["section1"]=>
  array(3) {
    ["data1"]=>
    int(1)
    ["data2"]=>
    int(1000)
    ["data3"]=>
    string(5) "abcde"
  }
  ["section2"]=>
  array(2) {
    ["string1"]=>
    string(6) "aaa123"
    ["string2"]=>
    string(7) "bbbbb11"
  }
  ["section3"]=>
  array(2) {
    ["array1"]=>
    array(3) {
      [0]=>
      string(3) "100"
      [1]=>
      int(200)
      [2]=>
      string(3) "300"
    }
    ["array2"]=>
    array(2) {
      ["test1"]=>
      string(8) "test1aaa"
      ["test2"]=>
      string(10) "test2bbbbb"
    }
  }
}



関連する記事

PHP 標準関数その1・文字列の分割・結合を行う関数(explode, implode)について
PHP 標準関数その2・変数の存在チェック及び解除を行う関数(isset, unset)について
PHP 標準関数その3・変数の整数型への変換を行う関数(intval)について
PHP INIファイル(初期設定用)の読込について(parse_ini_file)

ショッピングサイト一通りを最初から自分で作ってみることで、PHPでのシステム開発を学べる入門書です。

share











PR

コメント

コメントを書く