PHPのfgets関数でファイルの読み込みを行う方法【初心者向け】
プログラミング初心者向けにPHPのfile_get_contents関数、fgets関数を使ってファイルの読み込みを行う方法について解説しています。外部のファイルを読み込みたい場合に便利なメソッドなので、ぜひ覚えておきましょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
この記事ではPHPによるファイル読み込みについて説明していきます。
そもそもPHPが何か分からない場合は、先にPHPとはの記事をご覧ください。
なお本記事は、TechAcademyのPHPオンライン講座の内容をもとにしています。
今回の記事の内容は動画でもご覧いただけます。
テキストよりも動画の方が理解しやすいという場合はぜひご覧ください。
ファイルの読み込みとは
プログラムを作成するにあたり、キーボードやディスプレイから入出力することをしてきたと思います。
しかし、プログラムへ入力されるデータはキーボードだけではなく、外部ファイルからも読み込むことができるのです。
ここではファイルの読み込みについて実際にプログラムを書いて説明していきます。
田島メンター!ファイルからデータを読み込む方法ってありますか?
1行ずつ読み込んで処理する関数と、全体のファイルを一度に読み込む関数があるよ!
全体のファイルを一度に読み込む関数のほうが良さそうですね。
確かに。ただ、あまり無いんだけど大きなファイルを一度に読み込むとメモリを消費するので1行ずつ読み込むのも悪くないんだ。では、書き方を見てみよう!
ファイル読み込みの書き方
ファイルの内容をすべて読み込む
文字列 = file_get_contents(ファイル名)
ファイルから一行読み取る
文字列 = fgets(ハンドル)
ハンドルとはファイルを開いて処理しているときに、使用する管理用に用意されたものです。
ハンドルはファイルの処理位置を示していて、処理位置を進めていくことで開いたファイルの先頭から順に読み込むことや出力することができます。
[PR] PHPを学んで未経験からWebエンジニアを目指す方法とは
実際に書いてみよう
テスト用ファイル
$ 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人ずつつき、マンツーマンのメンタリングで学習をサポートし、オリジナルWebサービスを開発することが可能です。
独学に限界を感じている場合はご検討ください。