PHPのCSVファイルの操作

SplFileObjectを使う!

以前はfopen()とfclose()を使用していましたが、php5以降はSplFileObjectを使えるようになっています。

基本の流れ

open modeは、PHP: fopen – Manual を参照。

フラグ設定をして読み込む

CSV読み込む

必要に応じてエスケープ処理してください。

行の範囲を指定して取り出す

読み込み時の文字化け対策

Shift-JISで保存されているとCSVファイルは文字化けします。その対策として、以下のようにします。
参照:CSVアップロードからのMySQLへのデータ挿入 – Qiita

CSV読み込みの一連の流れ

まず、formを作成します。 次に、upload.php(任意の名前)を作成します。 参照:PHP: POST メソッドによるアップロード – Manual

CSVに書き込む

CSVに書き込む配列を用意します。CSVのデータを1行ごとに配列にして、配列に追加していきます。(多次元配列)

CSVファイルのダウンロード

Content-Typeの指定

基本的には、application/force-downloadでいいみたいですが、状況に応じて使い分けてください。

書き込みとダウンロードの全体の流れ

もし、パーミッションでエラーが出る場合は、ディレクトリまたはphpファイルの所有者とグループを以下のように変更してください。
超初歩的なミスですが、ダウンロードするphpファイルをhtmlのbodyタグの中に書いてしまうと、htmlファイルが出力されてしまいますのでご注意を。また1行目に空白行があると、CSVファイルの中身にも空白の1行が入ってしまいます。

HTML5のdownload属性は?

以下のhtml5で追加されたdownload属性は便利ですが、Macのsafari未対応のため使用しません(右クリックし絵リンク先を保存にすると使えますが・・・)

このページの関連ワード