PHPでcsvファイルまたはtsvファイルの読み込み・書き出しする方法を紹介します。
どちらのファイルも手順と使用する関数は同じです。
(関数に指定するパラメータは一部異なります。)
■補足情報
csvファイル…データがカンマ(,)で区切られた形式のファイル。
tsvファイル…データがタブ(/t)で区切られた形式のファイル。
■手順
・「読み込み」の場合
1:fopen関数で読み込むファイルを指定する
2:fgetcsv関数でファイル内のデータを読み込む
3:fclose関数で読み込んでいたファイルを閉じる
<?php
//読み込み("r")でファイルを指定
$fo = fopen("FileName_r.csv", "r");
if (true == $fo) {
//ファイル内の列を配列形式で$dataに格納する
//tsvファイルの場合は「fgetcsv($fo, 0, "\t")」とする
while ($data = fgetcsv($fo)) {
//$dataに対する処理がある場合はここに記載
}
}
//読み込んでいたファイルを閉じる
fclose($fo);
・書き出しの場合
1:fopen関数で書き込むファイルを指定する
2:fputcsv関数でファイルに書き込みを行う
3:fclose関数で書き込んでいたファイルを閉じる
<?php
//書き出し("w")でファイルを指定
$fp = fopen("FileName_w.csv", "w");
//csv(tsv)ファイルに配列形式の変数($data)をデータとして追加します
//tsvファイルの場合は「fputcsv($fp, $data, "\t")」とする
if (true == $fp) {
fputcsv($fp, $data);
}
//書き出していたファイルを閉じる
fclose($fp);
}
読み込みと書き込みを同時に行う場合は、以下のようになります。
<?php
$fo = fopen("FileName_r.csv", "r");
$fp = fopen("FileName_w.csv", "w");
if (true == $fo) {
while ($data = fgetcsv($fo)) {
//$dataに対する処理がある場合はここに記載
//$dataを列として書き出しファイルに追加
if (true == $fp) {
fputcsv($fp, $data);
}
}
fclose($fo);
fclose($fp);
}