【PHP】データ内に改行のあるCSVの処理方法

PHPでデータ内に改行を含むCSVファイルを読み込むサンプルを書いた PHP5

こちらの記事でPHPでのCSVファイルのダウンロードのサンプルを書きました。この記事では、CSVファイルの読み込みのサンプルを紹介します。

■特徴

SplFileObjectを利用しているため、エクセルで読み込みできる形式のCSVを読み込み可能です。データ内に改行が含まれるCSVも読み込みすることができます。

filePathにファイルが存在するパスを指定すると、CSVの内容が配列として戻ってきます。行数が多い場合は読み込みながらの処理に変更したほうが良いでしょう。

 

■以下、サンプルです

<?php
function readCsv($filePath) {

		// CSV読み込み
		$file = new SplFileObject($filePath); 
		$file->setFlags(SplFileObject::READ_CSV);

		$csvList = array();
		foreach ($file as $line) {
			// 空のレコードは無視
			if (!empty($line)) {
				$csvList[] = $line;
			}
		}

		// 空っぽだったら例外。
		if (empty($csvList)) {
			throw new Exception('CSVファイルの中身が空です。');
		}

		// 文字コードをコンバートする。
		mb_convert_variables('UTF-8', 'MS932,SJIS-win,SJIS', $csvList);

		return $csvList;
	}

 

もちろん、改行が含まれていないCSVも読み込むことが可能になっています。CSVでのデータのやり取りはまだまだ多いので、参考になればと思います。では。