【初心者向け】PHP ファイル操作を理解しよう!

ファイル読み込み

ファイルの準備

まずは読み込むためのファイルを準備します。今回は次の5行の内容をテキストエディタで入力して、PHPコードの実行ディレクトリに格納しました。

ファイルの内容

dog
fox
mouse
rabbit
cat

ファイルを1行ずつ読み込む方法

ファイルから1行ずつ読み込む手順を示します。ファイルは「fopen関数」で開きます。次に「fgets関数」でファイルの内容を一行ずつ読み込んでいきます。最後に「fclose関数」でファイルを閉じます。

ファイルを開く

ファイルを開くには「fopen関数」を使って、次のように書きます。

fopen(“ファイル名”, “モード”);

引数として「ファイル名」「モード」を指定します。引数で指定されたファイルを指定されたモードで開きます。fopen関数はファイルポインタを返します。ファイルポインタはテキストエディタのカーソルのようなものです。

ファイルを開くモードの一覧表を示します。

モード概要ファイルポインタ位置ファイルがない場合
r読み込み先頭FALSEを返す
r+読み込み/書き込み先頭FALSEを返す
w書き込み先頭作成する
w+読み込み/書き込み先頭作成する
a追加書き込み末尾作成する
a+読み込み/追加書き込み末尾作成する

1行読み込む

ファイルから1行読み込むには「fgets関数」を使って、次のように書きます。

fgets(ファイルポインタ);

fopen関数で得られたファイルポインタを引数として渡します。返り値はファイルから読み込んだ1行の文字列になります。

ファイルを閉じる

ファイルを閉じるときには、「fclose関数」を使って、次のように書きます。

fgets(ファイルポインタ);

fopen関数で得られたファイルポインタを引数として渡します。

ファイルの内容を全て読み込む方法

ファイルの内容を全て読み込むときには、「file_get_contents関数」を使って、次のように書きます。

file_get_contents(ファイル名);

引数で渡されたファイルの内容全てを読み込み、文字列として返します。

ファイル読み込みのサンプルコード

「fgets関数」を使ったサンプルコードとその実行結果を示します。2行目で「data.txt」というファイルを開いて、ファイルポインタを取得しています。ファイルの内容については、「ファイルの準備」で扱いました。while構文では、fgetsでファイルの内容を1行ずつ読み込み、echoで読み込んだ内容を出力しています。実行結果から正しく処理が行われていることが分かります。

コード

実行結果

$ php open1.php
dog
fox
mouse
rabbit
cat

「file_get_contents関数」を使ったサンプルコードとその実行結果を示します。2行目でファイルの内容全てを読み込み、3行目で読み込んだ内容を出力しています。実行結果が「open1.php」と同じであり、正しく処理が行われていることが分かります。

コード

実行結果

$ php open2.php
dog
fox
mouse
rabbit
cat

ファイル書き出し

ファイルへ書き込む手順は、fgets関数を使った読み込みとほぼ同じです。

  1. ファイルを開く(fopen)
  2. 書き込む(fwrite)
  3. ファイルを閉じる(fclose)

ファイルに書き込むには「fwrite関数」を使って、次のように書きます。

fwrite(ファイルポインタ, 書き込む文字列);

fopen関数で得られたファイルポインタを引数として渡します。

ファイル書き出しのサンプルコード

「fwrite関数」を使ったサンプルコードとその実行結果を示します。3行目〜7行目の「fwrite関数」でファイルへの書き込みを行なっています。このときに、「fwrite関数」の返り値を「ret」という配列に格納しておいて、9行目の「var_dump関数」で型と値を出力します。実行結果から、「fwrite関数」の返り値は、ファイルへ書き込まれた文字列のバイト数であることが分かります。また、catコマンで「output.txt」の内容を確認すると、正しく処理が実行されていることが分かります。

コード

実行結果

$ php write.php
array(5) {
[0]=>
int(4)
[1]=>
int(4)
[2]=>
int(6)
[3]=>
int(7)
[4]=>
int(4)
}

ファイルの内容

$ cat output.txt
dog
fox
mouse
rabbit
cat

まとめ

今回はPHPの「ファイル操作」について紹介しました!次回は「フォーム」について扱う予定です!!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です