PHP の CSV読み込み fgetcsv 疑問まとめ

PHPで fgetcsv 使用時の疑問を確認したメモ
$file = fopen($filepath, 'r');
while( $csv = fgetcsv($file) ){
	print_r($csv);
}
fclose($file);

改行コード
  • 改行コードは \r\n または \n
  • 単独で存在する \r は通常の文字と同様に扱われる※混入注意
ダブルコーテーション内
  • 戻り値(配列内)にダブルコーテーションは含まれない
  • カンマ, \r\n, \n を含むデータを読み込むことが可能
  • ダブルコーテーションは、2つ連続で表現
    例) "テスト""太郎""" → テスト"太郎"
その他
  • ダブルコーテーションで括る必要がないデータを、括ってもよい
  • ダブルコーテーションで括っていないダブルコーテーション(先頭以外)は、通常の文字として扱われる
    例) 1,あいうえお,かき"くけこ → [2]=かき"くけこ
  • スペースは区切りではない(ダブルコーテーションで括る必要なし)
  • カンマ前後のスペースも文字列として取得される(trimされない)
備考
  • \r = CR(0x0D=13)
  • \n = LF(0x0A=10)
  • Excel の Alt+Enter で入力したセル内の改行は、csv保存で ダブルコーテーション括りの \n となる
  • Excel の csv保存(utf-8)で作成されたファイルは、fgetcsv で読み込める(確認した限り)
  • Excel の csv保存は utf-8とデフォルトエンコード(sjis)が存在するので注意が必要


コメント