とりあえずの備忘録

主にパソコンやインターネットに関するメモ

PHP fgetcsv関数でCSVファイルを読み込む

CSVファイルをfgetcsv関数を使って読み込む

CSVファイルはmycsv.txtで、データ区切りはカンマ、データ囲み文字はダブルクォーテーションとする。

<?php
//CSVファイル定義
define('CSVFILE', './mycsv.txt');
define('DELIMITER', ',');  //データ区切り(カンマ)
define('ENCLOSURE', '"');  //データ囲み文字(ダブルクォーテーション)

//ファイルを開く
$fp = fopen(CSVFILE, 'r') or die('ファイルが開けません');

//テーブルを出力
echo '<table border="1">';
while ($field_array = fgetcsv($fp, 4096, DELIMITER, ENCLOSURE)) {
  echo '<tr>';
  foreach ($field_array as $value) {
    echo '<td>' . htmlspecialchars($value, ENT_QUOTES) . '</td>';
  }
  echo '</tr>';
}
echo '<table>';

//ファイルを閉じる
fclose($fp);
?>

fgetcsv([ファイルポインタ], [読み込むバイト数], [デリミタ], [エンクロージャ])の形式で指定する。
デリミタ省略時はカンマ、エンクロージャ省略時はダブルクォーテーションがデフォルト値となる。

「CSVファイル」mycsv.txt

"会員ID","名前","年齢","メール"
1,"yamada",25,"yamada@aaa.com"
2,"suzuki",22,"suzuki@bbb.com"
3,"sato",28,"sato@ccc.com"

「出力結果」

会員ID 名前 年齢 メール
1 yamada 25 yamada@aaa.com
2 suzuki 22 suzuki@bbb.com
3 sato 28 sato@ccc.com