SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【php】CSV形式の文字列をパースする(文字列をfgetcsv())

問題

CSV形式の文字列を簡単に配列にできない? CSVのファイルではないんだけど……

解答例

php5.3以降では str_getcsv() という関数が登場して、いくぶんやりやすそうであるが、古い環境では自作することになる。

下のコードは、文字列をfgetcsv()するサンプル。一時ファイルを活用している。

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

関連するメモ

コメント