1. 概要
本ページでは、前ページまでのこと以外の関数についてメモします。
2. parse_ini_file ini ファイルの読み込み
「parse_ini_file()」は、「.ini」ファイルの読み込みを行います。
array parse_ini_file ( string $filename [, bool $process_sections = FALSE [, int $scanner_mode = INI_SCANNER_NORMAL ]] )
「$filename」で指定したファイルを「PHP」の「php.ini」ファイルと同じ書式で読み込んで、配列の形式で返します。
配列の中身は、連想配列になっているようです。
2番目の引数は、省略すると「false」になりますが、「true」を指定するとセクションごとの連想配列になります。
[parse_ini_file]
a = hoge
b = fuga
c = #piyo
d = !moge
e = '!moge'
[FOO]
f = bar
という「.ini」ファイルを用意し
<?php
$dir = dirname(__FILE__);
$inifile = $dir.'/parse_ini_file.ini';
$array = parse_ini_file($inifile);
print_r($array);
$array = parse_ini_file($inifile, true);
print_r($array);
というソースを書いて実行すると下記の結果が得られます。
Array
(
[a] => hoge
[b] => fuga
[c] => #piyo
[d] => 1
[e] => !moge
[f] => bar
)
Array
(
[parse_ini_file] => Array
(
[a] => hoge
[b] => fuga
[c] => #piyo
[d] => 1
[e] => !moge
)
[FOO] => Array
(
[f] => bar
)
)
注意すべきは、「!」の表記があるときの動きです。
マニュアルのどこかに書いているとは思うのですが、見つけられませんでした。
要は特殊文字があるときは、シングルコーテーションで囲んだ方がいいようです。
「\」コードをつけてエスケープしようとしたのですが、これはエラーになりました。
3. file_exists ファイルの有無を調べる
file_exists ( string $filename ) : bool
指定した、ファイルが存在すれば「TRUE」、存在しなければ「FALSE」が返ります。
4. file_get_contents ファイルの内容を全て文字列に読み込む
file_get_contents ( string $filename [, bool $use_include_path = FALSE [, resource $context [, int $offset = 0 [, int $maxlen ]]]] ) : string
オープンしたり、クローズしたりの手間がないので、手っ取り早い。
5. file ファイル全体を読み込んで配列に格納する
「PHP: file - Manual」参照。
file(string $filename, int $flags = 0, resource $context = ?): array
「$filename」以外のオプション引数で、2番目の「$flags」に「FILE_IGNORE_NEW_LINES」を使用すると便利。
行末の改行を省略して取り込んでくれます。
下記のようなテキストファイルがあります。
aaaa
BBBB
cccc
これを、べたな入出力を使うと。
$fp = fopen('/パス/ファイル名', "r");
$array = array();
if (flock($fp, LOCK_EX))
{
while (($array[] = fgets($fp)) != false)
{
}
flock($fp, LOCK_UN);
}
fclose($fp);
print_r($array);
といささか長くなりますが、「file」で記述すると
$array = file('/パス/ファイル名', FILE_IGNORE_NEW_LINES);
print_r($array);
てな感じで、簡潔に書けます。
上の例は、改行込みで取得しちゃってますが、下の例は改行を取っ払っちゃってるので、「print_r」に余分な改行が入りません。
ちょっと気になるのが、上の例では、「flock」してロックをかけていますが、下は大丈夫かな?と。
まぁ、一発で読み込んでるし、組み込みの関数なので大丈夫なのかな。
下を実行すると下記の結果が得られます。
Array
(
[0] => aaaa
[1] => BBBB
[2] => cccc
)
6. fgetcsv CSV ファイルを1行読み込んで配列に格納する
fgetcsv(resource $stream, int $length = 0, string $separator = ",", string $enclosure = '"', string $escape = "\\"): array
先頭の「$tream」は必須で、有効なファイルポインタを渡します。
「$length」は、行の最大の長さ。
「$separator」は、デリミタ (シングルバイト文字 1 文字のみ) を設定。
「$enclosure」は、フィールド囲いこみ文字 (シングルバイト文字 1 文字のみ) を設定。
「$escape」は、エスケープ文字 (シングルバイト文字 最大で1文字) を設定。
aaaa,1,はじめ
BBBB,2,おわり
てな、「.csv」ファイルがありまして。
<?php
$fp = fopen(__DIR__."/file02.csv", "r");
if ($fp === FALSE)
{
return;
}
while (($array = fgetcsv($fp)) !== FALSE)
{
print_r($array);
}
fclose($fp);
てなソースを書きまして(ファイル名やディレクトリは正しいものとします)、実行すると、下記の結果が得られます。
Array
(
[0] => aaaa
[1] => 1
[2] => はじめ
)
Array
(
[0] => BBBB
[1] => 2
[2] => おわり
)
7. 参考サイト
本ページは、下記のサイトを参考にさせていただきました。
「PHP: parse_ini_file - Manual」