PHPではCSVファイルを読み込みしたり、書き出ししたりすることができます。この記事では、PHPでCSVファイルを読み込みしたり書き出ししたりする方法について、わかりやすくお伝えします。また、CSVファイルを読み込みするときの文字化けについてもお伝えします。
Webサイトを構築するのに、HTMLとともに欠かせないプログラミング言語であるのがPHPです。PHPを使って、Webサイトでさまざまなことができるようになります。PHPでできることの一つに、CSVファイルの配列の読み込みと書き出しがあります。
CSVファイルでは、さまざまなデータを表計算の形式で表現できます。これをファイルの形式のままでWebサイトに読み込みができれば、Webサイトでデータを示したいときにとても便利です。
また、CSVファイルからデータを読み込んで更新できるようにPHPでプログラミングして設定しておけます。そうすれば、CSVファイルを更新するたびに、わざわざWebサイトに入力し直すことなく、データの更新ができるようになります。
この記事では、PHPを使ってCSVファイルからデータを読み込みしたり、書き込みしたりする方法について詳しく解説します。
CSVファイルをPHPで読み込みするためには、主な方法としてはfgetcsv関数を使います。fgetcsv関数は「CSV」という文字列が中に入っていることからもわかる通り、CSVファイルの読み込み処理するための関数です。
fgetcsvを使いこなせれば、CSVファイルの読み込みがPHPでできるようになるので、ぜひ利用できるようにしましょう。
それではPHPでCSVファイルを読み込みするコードを見ていきましょう。あらかじめCSVファイルを作成して、PHPの実行フォルダに保存しておきましょう。
今回は上記のようなCSVファイルを作成しました。ファイル名は「test.csv」です。その上で、適当なエディタに以下のプログラムを作成します。
<?php $row = 1; if (($handle = fopen("test.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle))) { echo "${row}行目\n"; $row++; foreach ($data as $value) { echo "「${value}」\n"; } } fclose($handle); } |
すると、上記の画像の様にCSVファイルがPHPで読み込みされました。
「if (($handle = fopen("test.csv", "r")) !== FALSE)」
上記の行でまずは読み込みしようとしているファイルが存在しているかどうかを確認しています。
「while」からの行で、1行ずつfgetcsの関数を使ってCSVファイルの配列を読み込みして表示するようにプログラムしています。
CSVファイルを読み込みする方法には、「READ_CSV」を使う方法もあります。「READ_CSV」は、ファイル操作をするためのSplFileObjectクラスの1つです。こちらを使ったプログラムは次の通りです。
<?php $filepath = 'test.csv'; $file = new SplFileObject($filepath); $file->setFlags(SplFileObject::READ_CSV); $row = 0; foreach ($file as $line) { if (empty($line[0])){ echo 'continue'; continue; } $cnt = count($line); if ($row == 0){ echo 'タイトル:'.$line[0].'<br>'; $row++; continue; } for($i = 0; $i < $cnt; $i++){ echo $line[$i].'<br>'; } } ?> |
するとこのようにCSVファイルが出力されます。
外部のCSVファイルを、その配列のままでPHPで読み込みするだけではなく、CSVファイルにPHPを使って書き出しすることもできます。プログラムに書き出した文字列の配列を、カンマ区切りのCSVファイルに書き出すプログラムは次の通りです。
<?php $list = array ( array('aaa', 'bbb', 'ccc', 'dddd'), array('123', '456', '789'), array('"aaa"', '"bbb"') ); $file = new SplFileObject('file.csv', 'w'); foreach ($list as $fields) { $file->fputcsv($fields); } ?> |
上記のプログラムを実行すると、画像の様に「file.csv」というcsvファイルが作成されます。
こちらを開くと、次の画像のような文字列が書き出しされています。このように、PHPを使ってCSVファイルを書き出しすることも可能です。
CSVファイルの配列をPHPで読み込みしたり書き出ししたりするときに、良く起こる問題が文字化けです。文字化けが起こる原因は、CSVファイルを保存した時の文字コードと、PHPで読み込みや書き出しをするときの文字コードが違うためです。文字コードが違って、文字化けしてしまうときには、文字コードを一致させる必要があります。
こちらでは、PHPとCSVファイルの文字コードを一致させる方法について解説します。
1 / 2
続きを読む