アップロードしたファイルがcsv形式かどうか調べたい(php) その2
前記事
の続き
mime_content_type さらに着目
前回はjpegでテストしたが、
csv形式ならmime_content_typeはどう返すのか試してみよう。
(って、最初からそれを試せばよかったな)
前回はテキストファイルかどうかまでの判定まで進めたので、さて、csv形式という判定は?という考察である。
では前回の続き
var_dump($_FILES);
echo "<BR>" . mime_content_type ($_FILES['datafile']['tmp_name'] );
で結果を見てみる。PHP5.4です。←これ大事
mime_content_type は、PHP5.3より前は非推奨なので
↓
こちらを見ると、
$_FILES が excelを見抜いていますね。
というか送信元のブラウザからの情報らしい。拡張子を見てるらしい。
mime_content_type はテキストファイルであると教えてくれる。
同じファイルだが拡張子をcsvからjpgに変えた場合、
マックで作成したcsvも試したいが、用意できないなあ。それは別途でいいか。
アップロードするcsvのフォーマットは?
さてテキストファイルである前提なら、
もうしょっぱなから
SplFileObject::READ_CSV でファイルを読み込んじゃいましょうかね。
SplFileObject::READ_CSVについては以下のサイトが参考になる↓
コードのサンプルも参考にしよう
csvのフォーマットは例として、
ID,名前,処理日付 の3項目としよう。
カンマ区切りで3つとも必須といったものなのだが、
SplFileObject::READ_CSV で1行ずつ読み込んで、
配列の要素数が3つかどうかチェックしたり、さらにその値を見たりしていけばいいかな。