Developer

【PHP基礎】ファイルシステム関数② fgets, fwrite
2021.03.01
Lv1

【PHP基礎】ファイルシステム関数② fgets, fwrite

ファイルシステム関数②

前回に引き続き、ファイルの読み書きの際に必要なファイルシステム関数を紹介します。


■ファイルの読み込み・書き込み

前回の記事でも説明したとおり、
ファイル操作での基本的な流れは以下のようになります。

  1. ファイルを開く
  2. ファイルを読み込む・書き込む
  3. ファイルを閉じる

今回はこの基本手順の②、
「ファイルを読み込む」「ファイルに書き込む」操作で必要な関数を紹介します。


■fgets関数

https://www.php.net/manual/ja/function.fgets.php

fgets関数は、ファイルから1行を取得します。

●構文
fgets( handle [, length ] )

●引数

handle fopen()またはfsockopen() で正常にオープンされたファイルやURL​
length 読み込む最大長(バイト単位)

●戻り値

データ型 resource
値の説明 handle で指定したファイルポインタから最大 length – 1 バイト読み出し、
その文字列を返します。(lengthの指定が無い場合は1行分)​
ファイルポインタから読み込むデータがもうない場合は FALSE を返します。

<サンプル>
「こんにちは。
今日はいい天気です。」
と書かれたファイルを読み込みブラウザに表示する。

<?php​
// ファイルを開く(読み取りモード)​
$file = fopen("file.txt", "r");​
​
// ファイルの中身を1行ずつ読み取る​
while ($line = fgets($file)) {​
    echo $line."<br>\n";​
}​
​
// ファイルを閉じる​
fclose($file);​
?>

<結果>

このように1行ずつ繰り返し読み込み、最終行を読み込みブラウザに表示した後、
次の行が読み込めなくなるため終了するという流れで使用します。


■fwrite関数

https://www.php.net/manual/ja/function.fwrite.php

fwrite関数は、ファイルに書き込みを行います。

●構文
fwrite( handle, string [, length ] )

●引数

handle fopen()またはfsockopen() で正常にオープンされたファイルやURL​
string 書き込む文字列
length 書き込みを、length バイトに制限

●戻り値

データ型 int
値の説明 fwrite() は、 書き込んだバイト数、またはエラー時に FALSE を返します。

<サンプル1>
write.txtに「書き込みモード」という文字列を書き込む

<?php​
// ファイルを開く(書き込みモード)​
$file = fopen("write.txt", "w");​
​
// ファイルに書き込む​
fwrite($file, "書き込みモード\n");​
​
// ファイルを閉じる​
fclose($file);​
?>

<結果>

<サンプル2>
append.txtに「1行追加」という文字列を追記で書き込む

<?php​
// ファイルを開く(追加書き込みモード)​
$file = fopen("append.txt", "a");​
​
// ファイルに書き込む​
fwrite($file, "1行追加\n");​
​
// ファイルを閉じる​
fclose($file);​
?>

<結果>
3回実行後のappend.txt(実行のたびに追記されていく)


上記で紹介したサンプルのように
ファイルを読み込んだり、ファイルに上書き、追記など
簡単に行うことができます。

今回のファイルシステム関数の紹介は以上です。
次回の記事ではcsvやtsvファイルなど特定の文字で区切られたファイルを扱うときに便利な
ファイルシステム関数を紹介します。

PHP基礎 連載目次リンク

PHP基礎 連載目次