fgetcsv関数を利用してCSVファイルを読み込みます。
今回は下記のようなCSVファイルを読み込みます。
sample.csv(Shift_JIS)
1 2 3 4 5 6 |
1,"りんご,バナナ",フルーツ 2,オレンジ,フルーツ 3,"キュウリ,牛乳","野菜 飲み物" ,, 5,"""ポテトチップス""",お菓子 |
1行目
「りんご,バナナ」のように値の中に ,(カンマ)があるような場合は “(ダブルクォート)で値が囲まれています。
3~4行目
野菜と飲み物の間で改行が行われています。
5行目は空行となっています。
6行目
値の中で “(ダブルクォート)が利用されています。その場合は “” のようにダブルクォートを二重化することによって表示させることができます。
コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
<!DOCTYPE html> <html> <head> <title>CSVデータ表示</title> <meta charset="utf-8"> </head> <body> <table border='1'> <tr><th>id</th><th>名前</th><th>種類</th></tr> <?php if( ($fp = fopen("sample.csv","r"))=== false ){ die("CSVファイル読み込みエラー"); } while (($array = fgetcsv($fp)) !== FALSE) { //空行を取り除く if(!array_diff($array, array(''))){ continue; } echo "<tr>"; for($i = 0; $i < count($array); ++$i ){ $elem = nl2br(mb_convert_encoding($array[$i], 'UTF-8', 'SJIS')); $elem = $elem === "" ? " " : $elem; echo("<td>".$elem."</td>"); } echo "</tr>"; } fclose($fp); ?> </table> </body> </html> |
14行目
fopen関数を利用してCSVファイルを読み取っています。
18〜33行目
fgetcsv関数によって一行ごとに処理を行っていきます。
35行目
ファイルポインタを閉じます。
sample.csvを読み込んで表示させた結果