関数・クラス解説
parse_ini_file
version:PHP 4, PHP 5, PHP 7 (公式)設定ファイルをパースする
公式リファレンス
書式
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_sections は FALSE です。
- scanner_mode
- INI_SCANNER_NORMAL (デフォルト) あるいは INI_SCANNER_RAW。INI_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 を返します。
注意
注意: この関数は、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サーバがそれを返さないように設定を変更しなければならないということです。 そうしないと、セキュリティ上のリスクが発生する可能性があります。
サンプル
例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 ファイル上の値だけが評価されます。この値は定数でなければなりません。以下は例です:
define('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 ファイルのパース
// 以下の結果を比較するための簡単な関数
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
参考
ワード検索
※入力キーワードが、関数名・説明文・タグに含まれるものを検索関数名アルファベット別
最終更新一覧
●stristr
大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却
●stripslashes
バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く
●stripos
大文字小文字を区別せずに文字列が最初に現れる位置を取得する
●stripcslashes
addcslashes() でクォートされた文字列をアンクォートする
●strip_tags
文字列から HTML と PHP のタグを除去して返却
●strcspn
指定した文字が最初に現れる位置を調べる
●strcoll
ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する
●strcmp
2つの文字列を比較し同じか(あるいは大小)を判定する
●strchr
strstr() のエイリアス
●strcasecmp
2つの文字列を比較(大文字小文字を区別せず同じとみなす)
カテゴリー一覧
PHP の振る舞いの変更
音声フォーマットの操作
認証サービス
コマンドライン関連
圧縮およびアーカイブ
暗号
データベース関連
日付および時刻関連
ファイルシステム
自然言語および文字エンコーディング
画像処理および作成
メール関連
数学
テキスト以外の MIME 型
プロセス制御
その他の基本モジュール
その他のサービス
検索エンジン用の拡張モジュール
サーバー固有のモジュール
セッション関連
テキスト処理
変数・データ型関連
ウェブサービス
Windows 用のモジュール
XML 操作
GUI用の拡張モジュール