2020年07月10日更新
PHPでのファイルの読み込み方法!テキストを1行ずつ/全文取得する方法を解説!
PHPでファイルの読み込みをするときには、関数を使って配列を取得しながら読み込みをします。この記事では、PHPを1行ずつファイルの読み込みをする場合と、全文を一度に取得する場合のそれぞれについて、利用する関数の使い方をわかりやすく解説します。
目次
PHPファイルは関数を使って読み込みする!
PHPを利用できる環境をPCに整えたら、まず始めることは自分でPHPのプログラムを書けるようにすることです。自分でPHPのプログラムを書けないと、PHPで何ができて、どのようなことが実行されているのか理解できません。
しかし、ある程度プログラムを書けるようになってきて、実践段階に入ったら、外部のファイルの読み込みも行っていきます。外部ファイルの読み込みができるようになれば、プログラムファイルの内容に厚みが出てきます。
この記事では、PHPで外部ファイルの読み込みをしていきましょう。PHPでファイルを読み込みするためには、関数を利用します。この記事では、PHPで関数を使って外部ファイルを読み込みする方法について詳しく解説します。
テスト用のファイルとして、PHPの実行フォルダに次のテキストファイルを作成しておきました。
1行目 これはテストです。 2行目 今日のテストは順調です。 3行目 このテストの結果を見てみましょう。 |
PHPファイルの全文の読み込みを簡単に行う方法
まずは外部ファイルの全文の読み込みを簡単にできる方法を解説します。PHPで、ファイル全文の読み込みをする方法は次の通りです。
file_get_contents関数で全文を読み込み
PHPでファイルの全文を読み込むための関数は「file_get_contents」という関数を利用します。これとは別に「file」という関数もあります。fileとfile_get_contentsの違いは、fileはファイルそのものを配列として読み込みます。一方でfile_get_contentsは、ファイルを文字列として読み込みます。
ファイルの中に別のファイルを読み込む場合には、文字列としてファイルの読み込みするのが普通なので、通常はfile_get_contentsを利用します。file_get_contentsでうまく読み込めないときにはfileを使いましょう。
それではPHPでプログラムを書いてみましょう。
<?php $contents = file_get_contents("test.txt"); echo $contents; ?> |
これをブラウザ上で実行してみると、上記の画像の様にテキストファイルが読み込みされて、PHPで全文の読み込みが実行されています。
PHPファイルを行単位の配列として読み込みする方法
PHPで読み込みたいファイルがあった場合、全文は必要なく、ファイルの一部分の配列だけ読み込みできればいい場合もあります。そのような場合には、ファイルの配列を1行ずつ読み込みしましょう。こちらでは、PHPでファイルの配列を1行ずつ読み込みする方法について解説します。
fgets関数でテキストを行単位で読み込み
1行ずつPHPでファイルを読み込む場合には、「fgets」という関数を使います。fgetsという関数は、指定されたファイルの中から、指定された1行の配列だけを取り出すための関数です。
この記事の一番最初に作ったテキストファイルの中から、2行目の「2行目 今日のテストは順調です」だけをファイルから読み込むためのプログラムを作成してみましょう。
基本的なプログラムの書き方は次の通りです。
<?php $fp = fopen("読み込むファイル名", "r"); $line = fgets($fp); echo "$line<br>"; fclose($fp); ?> |
実行するプログラムは次の通りです。
<?php $fp = fopen("test.txt", "r"); $line = fgets($fp); echo "$line<br>"; fclose($fp); ?> |
ブラウザで実行結果を確認してみます。
1行の配列だけが読み込みされています。
CSVファイルをPHPで読み込みする方法
CSVファイルもPHPで読み込みができます。CSVファイルをPHPで読み込みして出力する方法も見ておきましょう。あらかじめ読み込みするCSVファイルをPHPを実行するフォルダに保存しておきます。それでは、このファイルをPHPに読み込みする方法を解説します。
fgetcsv関数を使う方法
fgetcsvを使ってCSVファイルをPHPで読み込みする方法です。fgetcsvはCSVファイルから1行ずつ値を取得して読み込みする関数です。fgets関数とよく似ていますが、fgetcsvはCSVファイルの特徴である、カンマで区切られた値を配列として取得します。
プログラムは次のように書きます。
<?php $file = '読み込むCSVファイル名'; if (($fp = fopen($file, 'r')) !== FALSE){ $row = 0; while (($line = fgetcsv($fp)) !== FALSE) { if ($row == 0){ echo 'タイトル:'.$line[0].'<br>'; $row++; continue; } echo $line[0].'<br>'; $row++; } }else{ echo $file.'の読み込みに失敗しました。'; } fclose($fp); ?> |
CSVファイルの読み込みを実行した結果が、ブラウザ上で上記の画像のようになる実際のプログラムはこちらです。
<?php $file = 'test.csv'; if (($fp = fopen($file, 'r')) !== FALSE){ $row = 0; while (($line = fgetcsv($fp)) !== FALSE) { if ($row == 0){ echo 'タイトル:'.$line[0].'<br>'; $row++; continue; } echo $line[0].'<br>'; $row++; } }else{ echo $file.'の読み込みに失敗しました。'; } fclose($fp); ?> |
文字化けを防ぐ方法
上記の画像の様に、CSVファイルをPHPで取得した時に、CSVファイルの内容が文字化けしてしまうことがあります。これは、PHPで実行できる文字コードと、CSVファイルの文字コードが違うためです。CSVファイルを保存するときの文字コードを変更することで、文字化けを防げます。
現在は「UTF-8」が主に使われている文字コードです。CSVファイルを保存するときに、ファイルの文字コードを「UTF-8」にするように心がけましょう。
PHPでファイルの情報を取得する方法
PHPを使ってファイルの情報を取得することもできます。ファイル情報の取得方法も解説します。
ファイルサイズを取得する方法
ファイルサイズを取得する方法です。ファイルサイズを取得するためには、「filesize」を使います。ファイルサイズを取得するためのプログラムは次の通りです。
<?php $file_name = "ファイル名"; echo filesize($file_name); ?> |
先ほど読み込みしたテキストファイルのファイルサイズを取得してみます。
<?php $file_name = "test.txt"; echo filesize($file_name); ?> |
すると、上記の画像の様にファイルサイズは148バイトであると表示されました。
更新日時を取得する方法
次はファイルの更新日時を取得してみましょう。ファイルの更新日時を取得するためには「filemtime」を使います。ファイルの更新日時取得のためのプログラムは次の通りです。また、テキストファイルの情報を取得してみましょう。
<?php $file_name = "test.txt"; echo date("Y/m/d H:i", filemtime($file_name)); ?> |
するとこのように、ファイルの更新日時が表示できました。
PHPでファイルの読み込み処理の方法を覚えよう!
この記事では、PHPで外部ファイルを読み込む方法を解説してきました。PHPで作ったプログラムファイルだけではなく、外部ファイルの読み込みも使いこなせるようになると、プログラミングの幅も広がります。
ぜひ、この機会にPHPでファイルの読み込み方法も使えるようにしましょう。PHPでファイルの読み込みができるようになって、プログラミングの幅をもっと広げていきましょう。