【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;
}