SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

【php】CSV形式の文字列からデータを取得したい

サンプル

fgetcsv()はファイルポインタからCSVを読み込む。

ファイルじゃなくて文字列なんだけど…というときは一時ファイル(tmpfile())に書き込めばfgetcsv()に渡せる。

// fgetcsvの文字列版
function sgetcsv($csv)
{
	$data = array();
	$_csv = mb_convert_encoding($csv, 'UTF-8', 'SJIS');
	$fp = tmpfile();
	fwrite($fp, $_csv);
	rewind($fp);
	while ($row = fgetcsv($fp, 4096)) {
		$data[] = $row;
	}
	fclose($fp);
	return $data;
}

5行目: サンプルはSJISの文字列を渡すことを想定。そうではない場合は変換元の文字コードを変える。UTF-8環境では変換不要。

5行目: fgetcsv()に渡すならUTF-8にしておくのがおすすめ。

8行目: 忘れがちなrewind()で巻き戻し。

関連するメモ

コメント