PHPプログラムに関する各種メモ書き

PHPでCSVを読み込み、出力(ダウンロード)させるLeague CSV

◆ 素のPHPのみでCSV読み込みをする

$file_path = 'data_100.csv';
$file = new SplFileObject($file_path);
$file->setFlags(SplFileObject::READ_CSV);
$convert_count = 0;
foreach ($file as $line) {
	print_r($line);
}

PHPだけでCSV読み込みは可能ですが、工夫しないと改行のみの行も出力されます。

◆ league/csvを使用してCSVファイルを扱う (要PHP7以上)

https://packagist.org/packages/league/csv

● 1. インストール

composerを使用します

composer require league/csv

● 2. CSVの読み込み

composerを使用しているので autoload.php を読み込みます

$php_version = (float)phpversion();
if ( $php_version < 7.0 ){ die("league/csv を使用するにはPHP バージョン7.0以上が必要です");}
require './vendor/autoload.php';
use League\Csv\Reader;

// CSVファイルの読み込み
$csv = Reader::createFromPath("./language.csv");

// ヘッダ(先頭行)を取得
$headers = $csv->fetchOne();
var_dump($headers);

// CSVデータを読み込んで出力
$records = $csv->getRecords();
foreach ($records as $offset => $record) {
    print_r($offset);
    print_r($record);
}

● 2. CSVの出力

$php_version = (float)phpversion();
if ( $php_version < 5.5 ){ die("league/csv を使用するにはPHP バージョン5.5以上が必要です");}
require APPPATH.'/vendor/autoload.php';
use League\Csv\Writer;

// ファイルの出力
$csv_writer = Writer::createFromFileObject(new SplTempFileObject());
$csv_writer->insertOne( array('カラム1','カラム2','カラム3' ) );
$csv_writer->output('users.csv');

● league/csvのマニュアル

http://csv.thephpleague.com/9.0/

関連エントリー

No.1012
01/17 18:45

edit

composer
CSV