PHPのfgets関数でファイルの読み込みを行う方法【初心者向け】

プログラミング初心者向けにPHPのfile_get_contents関数、fgets関数を使ってファイルの読み込みを行う方法について解説しています。外部のファイルを読み込みたい場合に便利なメソッドなので、ぜひ覚えておきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

この記事ではPHPによるファイル読み込みについて説明していきます。

そもそもPHPが何か分からない場合は、先にPHPとはの記事をご覧ください。

 

なお本記事は、TechAcademyのPHPオンライン講座の内容をもとにしています。

 

今回の記事の内容は動画でもご覧いただけます。
テキストよりも動画の方が理解しやすいという場合はぜひご覧ください。

 

ファイルの読み込みとは

プログラムを作成するにあたり、キーボードやディスプレイから入出力することをしてきたと思います。

しかし、プログラムへ入力されるデータはキーボードだけではなく、外部ファイルからも読み込むことができるのです。

ここではファイルの読み込みについて実際にプログラムを書いて説明していきます。

 

大石ゆかり

田島メンター!ファイルからデータを読み込む方法ってありますか?

田島悠介

1行ずつ読み込んで処理する関数と、全体のファイルを一度に読み込む関数があるよ!

大石ゆかり

全体のファイルを一度に読み込む関数のほうが良さそうですね。

田島悠介

確かに。ただ、あまり無いんだけど大きなファイルを一度に読み込むとメモリを消費するので1行ずつ読み込むのも悪くないんだ。では、書き方を見てみよう!

 

ファイル読み込みの書き方

ファイルの内容をすべて読み込む

文字列 = file_get_contents(ファイル名)

 

ファイルから一行読み取る

文字列 = fgets(ハンドル)

ハンドルとはファイルを開いて処理しているときに、使用する管理用に用意されたものです。

ハンドルはファイルの処理位置を示していて、処理位置を進めていくことで開いたファイルの先頭から順に読み込むことや出力することができます。

 

[PR] PHPのプログラミングで挫折しない学習方法を動画で公開中

実際に書いてみよう

テスト用ファイル

$ cat TEST.txt
テストファイルの一行目
テストファイルの二行目

 

file_get_contents

<?php
  define("TESTFILE","./TEST.txt");
  print_r("file_get_contents関数\n");
  var_dump(file_get_contents(TESTFILE));
?>

 

実行結果

$ php 01.php
file_get_contents関数
string(68) "テストファイルの一行目
テストファイルの二行目"

 

fgets

<?php
  define("TESTFILE","./TEST.txt");
  $fh = fopen(TESTFILE, "r");

  echo "fgets関数\n";
  while (($line = fgets($fh))) {
    echo $line;
  }

  fclose($fh);
?>

 

実行結果

$ php 02.php
fgets関数
テストファイルの一行目
テストファイルの二行目

 

おわりに

ファイルの読み込みと書き込みはプログラミングの基本ですが、もっとも頻繁に使用される機能です。

実際に動きを見ながら身につけていきましょう。

ファイルの書き込みをする方法についても合わせてご覧ください。

 

大石ゆかり

file_get_contentsは、ファイル名を指定するだけですねー。fgetsのほうはハンドル?を指定しなければならないんですか?

田島悠介

ファイルハンドルっていうのは、何ていうかファイルを扱うための抽象的なハンドルのようなものなんだ。ファイルを開いた時に返ってくるんだ。

大石ゆかり

それを利用して、繰り返し文で最終行まで読み込んでいく感じですか。

田島悠介

そうそう。もう読み込めなくなったら、falseが返って来て、繰り返し処理が停止するんだよ。

 

また、PHPを勉強していて、

  • もっと効率的に勉強したい
  • 誰かに聞きながら学びたい
  • 自分でWebサービスを作りたい

と思ったことはないでしょうか。

 

そんな方のために、TechAcademyではオンラインブートキャンプPHP/Laravelコースを提供しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

独学に限界を感じている場合はご検討ください。