phpでcsvを読み込んで表で表示する。

 

 

PHPでcsvを読み込みたいな。それでね、表の形でウェブページに表示したいの。

 

 

 

phpでcsvを読み込むためには「fgetcsv」という関数が使えます。

 

 

 

 

 

それでは、試してみましょうか。 読み込みに使うcsvをまず用意してください。

 

 

 

 

csvはエクセルで表を作って、名前を付けて保存のときにcsvを指定するとできるね。 作った!

 

 

【php_csv01.csv】

項番,名前,特徴
1,滾々川 いちじく,グレートガール 
2,花ノ根 くるり,優しい

 

 

いちじくちゃんは「グレートガール」なんですね。。カッコいいですね。 それでは、このcsvをfgetcsv関数のサンプルを作ってみましょう。

 

 

 

 

 

【サンプルスクリプト】

<?php
//fopen関数により、指定したファイル(csv)を読み込みモードで開いて
//ファイルハンドル(今回は$f_handleとします)を指定する。
//開いたファイルの操作には、ファイル名ではなく、
//ファイル操作には、このファイルハンドルを指定してコードを記載する。
$f_handle = fopen('php_csv01.csv', 'r');
//テーブルの見出し項目のHTMLをechoで表示する。
echo '<table border="1">
<tr>
<th>項番</th>
<th>名前</th>
<th>特徴</th>
</tr>';
//fgetcsvでCSVファイルのデータを一行読み込み配列に入れ、
//テーブルの一行に表示させる処理を
//while文によりcsvのデータがある行分繰り返す。
while($yomikomi_csv = fgetcsv($f_handle)){
// テーブルに配列の値を格納。
echo '<tr>';
echo '<td>'.$yomikomi_csv[0].'</td>';
echo '<td>'.$yomikomi_csv[1].'</td>';
echo '<td>'.$yomikomi_csv[2].'</td>';
echo '</tr>';
}
// テーブルを閉じる。
echo '</table>';
// fopen関数により開いたファイルを閉じる。
fclose($f_handle);
?>

 

 

項番 名前 特徴
O
1X O[gK[
2ԃm D

 

 

あれ?文字化けしっちゃったよ? くるりちゃん?どうゆうこと?

 

 

 

 

 

 

 

あ~、エクセルはshift-jisの文字コードで保存されてしまうのですが、phpの対応している文字コードがUTF-8なので、文字コードの違いで文字化けしてしまったのですね。

 

 

 

 

 

対策はいくつかありますが、一番シンプルなのはエクセルで名前を付けて保存の時に[CSV UTF-8(コンマ区切り)]を指定する方法です。 これはエクセルの2016以降で使用することができます。

 

 

 

 

いちじくの~エクセルは~2019!! GO!!

 

 

 

 

項番 名前 特徴
項番名前特徴
1いちじくグレートガール
2くるり優しい
3文鳥バカ鳥(`A´)

 

 

 

 

 

なんかしれっと小桜さんをディスってますね。。。

 

 

 

 

 

うーん、csvの一行目は見出し項目なので、表示しないでほしいな。

 

 

 

それでは、下のようにして、一行目をスキップしましょう。

 

 

【サンプルスクリプト】

<?php
//fopen関数により、指定したファイル(csv)を読み込みモードで開いて
//ファイルハンドル(今回は$f_handleとします)を指定する。
//開いたファイルの操作には、ファイル名ではなく、
//ファイル操作には、このファイルハンドルを指定してコードを記載する。
$f_handle = fopen('php_csv01.csv', 'r'); //csvの一行目(見出し行)を飛ばすためのカウンタ変数を宣言。 $midashi_skip= 0;
//テーブルの見出し項目のHTMLをechoで表示する。
echo '<table border="1">
<tr>
<th>項番</th>
<th>名前</th>
<th>特徴</th>
</tr>';
//fgetcsvでCSVファイルのデータを一行読み込み配列に入れ、
//テーブルの一行に表示させる処理を
//while文によりcsvのデータがある行分繰り返す。
while($yomikomi_csv = fgetcsv($f_handle)){ //一行目(見出し行)であったら、処理を一回スキップする。 if ($midashi_skip == 0) {
$midashi_skip++;
continue;
}
// テーブルに配列の値を格納。
echo '<tr>';
echo '<td>'.$yomikomi_csv[0].'</td>';
echo '<td>'.$yomikomi_csv[1].'</td>';
echo '<td>'.$yomikomi_csv[2].'</td>';
echo '</tr>';
}
// テーブルを閉じる。
echo '</table>';
// fopen関数により開いたファイルを閉じる。
fclose($f_handle);
?>

項番 名前 特徴
1いちじくグレートガール
2くるり優しい
3文鳥バカ鳥(`A´)

 

 

とりあえずはできましたね。 HTMLで表のコードを書くより、メンテナンスがしやすいので、いろいろな場面で活用できそうですね。

 

 

 

 

 

 

 

 

お名前


削除キー(必須)

コメント(必須)


サイト内検索

twiter

CONTENTS

 

 

 

くるくるサンプルコード

 

 

 

【↓広告↓】