PHPでファイルの読み込みをするときには、関数を使って配列を取得しながら読み込みをします。この記事では、PHPを1行ずつファイルの読み込みをする場合と、全文を一度に取得する場合のそれぞれについて、利用する関数の使い方をわかりやすく解説します。
PHPを利用できる環境をPCに整えたら、まず始めることは自分でPHPのプログラムを書けるようにすることです。自分でPHPのプログラムを書けないと、PHPで何ができて、どのようなことが実行されているのか理解できません。
しかし、ある程度プログラムを書けるようになってきて、実践段階に入ったら、外部のファイルの読み込みも行っていきます。外部ファイルの読み込みができるようになれば、プログラムファイルの内容に厚みが出てきます。
この記事では、PHPで外部ファイルの読み込みをしていきましょう。PHPでファイルを読み込みするためには、関数を利用します。この記事では、PHPで関数を使って外部ファイルを読み込みする方法について詳しく解説します。
テスト用のファイルとして、PHPの実行フォルダに次のテキストファイルを作成しておきました。
1行目 これはテストです。 2行目 今日のテストは順調です。 3行目 このテストの結果を見てみましょう。 |
まずは外部ファイルの全文の読み込みを簡単にできる方法を解説します。PHPで、ファイル全文の読み込みをする方法は次の通りです。
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で読み込みたいファイルがあった場合、全文は必要なく、ファイルの一部分の配列だけ読み込みできればいい場合もあります。そのような場合には、ファイルの配列を1行ずつ読み込みしましょう。こちらでは、PHPでファイルの配列を1行ずつ読み込みする方法について解説します。
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を実行するフォルダに保存しておきます。それでは、このファイルをPHPに読み込みする方法を解説します。
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); ?> |
1 / 2
続きを読む