【PHP入門】ファイル操作の方法総まとめ

PHPではファイル操作を行うさまざまな関数が用意されています。

この記事では、

・ファイルを読み込む方法
・CSVファイルを読み込む方法
・ファイルに書き込む方法

という基本的な内容から、

・ファイルの内容を全て読み込む方法
・ファイルをダウンロードする方法
・外部ファイルを読み込む方法
・ファイルを削除する方法

などのさまざまなファイルを操作する関数についても解説していきます。

今回はそんなPHPのファイル操作について、わかりやすく解説します!

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

ここでは、PHPのファイル操作の基本であるファイルの読み込みや書き込み方法について解説します。

ファイルのオープンとクローズ(fopen/fclose)

この章では、fopen関数、fclose関数を使い、ファイルの読み込みや書き込みをしていきます。

■fopen
ファイルの読み込みや書き込みをするためには、fopen関数でファイルをオープンする必要があります。

書き方:

引数:
第一引数には読み込むファイル名を指定します。

第二引数にはモードを指定します。モードは読み込みモード‘r’、書き込みモード‘w’などがあります。

戻り値:
ファイルのオープンに成功した場合はファイルポインタを返します。ファイルポインタとは、ファイルをどこまで読んだか、書いたかを示す場所です。

失敗した場合はFALSEを返します。

■fclose
ファイルをオープンし、処理を行った後はfclose関数を使用してファイルをクローズする必要があります。

書き方:

引数:
fopen関数で正常にオープンされたファイルのファイルポインタを指定します。

戻り値:
成功した場合にTRUE、失敗した場合にFALSEを返します。

fopen関数とfclose関数の使用例:

ファイルの読み込み(fgets)

ファイルを1行ずつ読み込むには、fgets関数を使用します。

書き方:

引数:
第一引数にfopen関数で取得したファイルポインタを指定します。

第二引数には読み込む文字の長さを指定します。指定のない場合は改行まで読み込みます。

戻り値:
読み込んだ文字列を返します。ファイルポインタから読み込むデータがない場合はFALSEを返します。

では、実際にファイルを読み込んで内容を取得してみましょう。読み込むファイルは予め用意しておきます。

読み込むファイル(php.txt):

サンプルプログラム:

実行結果:

サンプルではfopen関数で’r’を指定してファイルの内容を読み込みモードで取得しています。

ファイルポインタの内容を取得するためには、while文でファイルポインタの内容を1行ずつ取得する必要があります。

fgets関数は、読み込むデータがなくなるとFALSEを返すのでwhile文が終了します。

CSVファイルの読み込み(fgetcsv)

CSV(Comma Separated Value)ファイルとは、値をカンマ(,)で区切られた形式のファイルのことを指します。

CSVファイルはデータ形式が単純なため、外部ファイルとしてよく使用されます

PHPでCSVファイルを1行ずつ読み込むには、fgetcsv関数を使用します。

書き方:

引数:
第一引数にはfopen関数で取得したファイルポインタを指定します。

第二引数には行の長さを、第三引数には区切り文字であるデリミタを指定します。

戻り値:
読み込んだ1行を区切り文字で区切り、配列に格納した値を返します。

fgetcsv関数を使用してCSVファイルを読み込むサンプルです。

読み込むファイル(member.csv):

サンプルプログラム:

実行結果:

fopen関数でファイルポインタを取得し、while文の式でfgetcsv関数を使用して、1行ずつCSVファイルを読みこんでいます。

fgetcsv関数を使用してCSVファイルを読み込む方法や、SplFileObjectクラスを使用した読み込み方法については、以下の記事で詳しく解説しています!

ファイルの書き込み(fwrite)

ファイルに書き込むには、fopen関数で書き込みモード‘w’を指定してファイルを開き、fwrite関数で文字列を書き込みます。

書き方:

引数:
第一引数にファイルポインタを指定し、第二引数に書き込む文字列を指定します。

第三引数が指定された場合は、書き込むバイト数を指定します。

以下にファイルに文字列を書き込む簡単なサンプルを紹介します。

サンプルプログラム:

実行結果(php.txt):

サンプルでは書き込みモード’w’でファイルを開いています。

fwrite関数でファイルポインタと書き込む文字列を指定して、ファイルに指定した文字列を書き込みます。

ファイルの読み込み、書き込み方法については、以下の記事でも詳しく解説しています!

ファイル操作でエラーが発生した場合

ファイル操作は前述したとおり、fopen関数でファイルを開き、fwriteでファイルの書き込み、fclose関数でファイルを閉じる方法が一連の処理となります。

しかし、場合によってはファイルが読み込めなかったり、書き込みでエラーが発生する場合があります。

そのような場合は、指定したディレクトリにファイルが存在するか、パーミッションが書き込みできる権限になっているか?などを確認しておきましょう。

パーミッションを変更する場合は、以下のように記述します。

chmodの2番目の引数の数値が権限の設定となります。

基本的に666に設定しておけば問題ありませんが、数値表記について詳しく知りたい方は以下のページも参考にしてみてください。
https://lolipop.jp/manual/hp/permission/

ファイルの内容を全て読み込む(file_get_contents)

先述したfgets関数を使用すればファイルの内容を1行ずつ取得できますが、file_get_contents関数を使用すれば、fopenやfcloseを使うことなく簡単にファイルの内容を一括で読み込むことができます。

file_get_contents関数は、以下のように記述します。

書き方:

引数:
第一引数には読み込むパス/ファイル名を指定します。

第二引数にインクルードパスFILE_USE_INCLUDE_PATHを指定すると、インクルードパスからファイルを探すことができます。

戻り値:
読み込んだデータを返します。失敗した場合はFALSEを返します。

file_get_contents関数を使用し、テキストファイルを全て読み込むサンプルです。

読み込むファイルは、fgets関数で使用した「php.txt」を使用しています。

サンプルプログラム:

実行結果:

ファイルの内容を全て読み込むことができています。

そんなfile_get_contents関数の詳細については、以下の記事で詳しく解説しています!

ファイルのダウンロード

ファイルをダウンロードするには、header関数を使用してHTTPヘッダを送信する必要があります。

HTTPヘッダとは、サーバへのリクエスト時にはどんなブラウザがどういった情報をリクエストしているのか、サーバからのレスポンス時にはどのようなコンテンツを返すのかといった、データ本体とは別にブラウザやデータに関する情報を付加するものです。

ダウンロードするにはレスポンスにHTTPヘッダの情報として、「Content-Type」「Content-Length」「Content-Disposition」の3つの指定する必要があります。

書き方:

ファイルをダウンロードする具体的な処理内容については、以下の記事で詳しく解説しています!

外部ファイルを読み込む(include)

外部ファイルを読み込むにはinclude文を使用します。

include文は指定されたファイルを読み込んで、ファイルに記述されているソースコードを実行します。

書き方:

外部ファイル名はシングルクォーテーションやダブルクォーテーション、括弧で囲んで指定することができます。

外部ファイルは実行ファイルからの相対パスまたは絶対パス、サーバ上の絶対パスで指定します。

サンプルです。

サンプルプログラム(include1.php):

サンプルプログラム(include2.php):

実行結果(include1.php):

include1.phpでは、「include ‘include2.php’;」でinclude2.phpを読み込んでいます

include1.phpを実行すると、「include1」の表示後、include2.phpの処理が実行され、「include2」が表示されています。

そんな外部ファイルを読み込む方法の詳細については、以下の記事で詳しく解説しています!

ファイルの削除(unlink)

ファイルを削除するにはunlink関数を使用します。

書き方:

引数:
第一引数には削除するファイル名を指定します。

第二引数にはコンテキストを指定します。コンテキストの詳細については以下のストリームを参照してください。
http://php.net/manual/ja/book.stream.php

戻り値:
削除が成功するとTRUEを返し、失敗するとFALSEを返します。

unlink関数を使用したサンプルです。

サンプルプログラム:

実行結果:

そんなファイルの削除方法については、以下の記事で詳しく解説しています!

PHPについてもっと知りたい方へ

「PHPについて実はいまいちわかっていない・・・」
「もっとPHPについて詳しく知りたい!」

と思っている方は以下の記事も参考にしてみてください!

まとめ

ここでは、PHPのファイル操作全般について解説しました。

解説した内容をおさらいすると、

  • fopen関数はファイルを開く
  • fclose関数はファイルを閉じる
  • file_get_contents関数でファイルの内容を全て読み込む
  • header関数でファイルをダウンロードする
  • include関数で外部ファイルの読み込み
  • unlink関数でファイルの削除
  • is_dir関数でファイル・ディレクトリを調べる

となります。

ファイルを扱う処理はよく使われますので、基本はしっかりと抑えておきましょう。

もしファイル操作で分からないことがあったら、この記事を思い出してくださいね。

未経験者でも安心の徹底サポート!まずは完全無料の体験レッスン!

「プログラミングに興味があるけど未経験だし、、、」とお悩みの方はご安心ください。

  • 24時間質問し放題
  • あなただけのオーダーメイドカリキュラムで学習の効率化
  • 仕事獲得方法からオリジナルアプリ開発方法

侍エンジニア塾では徹底したサポートによる「オーダーメイドカリキュラム」を作成しています。

まずは無料体験レッスンで、「挫折しない学習方法」や「あなただけの学習ロードマップ」を知り、学習の効率化をしましょう。独学の難点である「オリジナルアプリの作り方やエラーの対処法」についてもアドバイスさせていただきます。

詳しいサービス内容は、下記よりご参照ください。

cta_mtm1

LINEで送る
Pocket

書いた人

ヤマシタ

フリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、今まで200本以上の執筆経験があります

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説