【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()で巻き戻し。