1
1

More than 3 years have passed since last update.

PHPでcsv(tsv)ファイルを読み込み・書き出しする方法

Last updated at Posted at 2020-04-07

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);
}
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1