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