たとえば、PHPで、ボタンをクリック、あるいはアンカータグをクリックされたら、CSVファイルを保存するダイアログが出て、保存できるようにするなどという場合があるかと思う。
その場合、たとえば、アンカータグで、
<A HREF="http://127.0.0.1/outcsv.php">CSV出力</A>
(実際は< >は、半角)
と書かれた場合、outcsv.phpは、どうやって書くかというお話。
■方針
バイナリーで送ることにすれば、ふつう、保存するかどうかのダイアログが出て、保存できるので、バイナリーで送ることにします。Content-Dispositionを指定すると、ファイル名が指定できるので、そうしましょう。
■ソース
ソースはこんなかんじ
<?php header("Content-Type: application/octed-stream"); header("Content-Disposition: inline; filename=neagari071003.csv"); ?> "No","証券コード","市場","会社名" "1","3114","大証2部","(株)プロジェ・ホールディングス" "2","8519","東証1部","ポケットカード(株)" "3","2122","マザーズ","(株)インタースペース" "4","3237","マザーズ","(株)イントランス" "5","6634","JASDAQ","(株)ネットインデックス" |
(上記< > ¥は、本当は半角)
これを、outcsv.phpに書きます。今回は、内容を、No以下直接書いていますが、実際には、PHPでデータベースを検索してとか、いろいろして書き出すと思います。
大切なのは、headerの2行です。
■注意など
なお、<?php(<は本当は半角)を、ファイルの先頭に書かないとエラーになるような気がする(いろいろやってみた結果)。
Content-Dispositionのinlineは、attachmentに変えてもOK。その後のファイル名neagari071003.csvは好きなファイル名にしてOK
こんなかんじです。