PHP経由でデータを元にCSV生成

テキストファイルを元にPHP経由でCSVダウンロード

元となるテキストファイルはタブ区切り(tsv)を想定。

TSV

PHP経由でデータを元にCSV生成 http://php.o0o0.jp/article/4015929025140041 PDFや画像をPHP経由で生成 reference PHP経由でファイルを出力 http://php.o0o0.jp/article/php-file_download PDFや画像をPHP経由で生成 reference Fiddler HTTP デバッガ http://php.o0o0.jp/article/2967174473163794 Fiddlerのインストールと基本的な使い方 install User Agentの切り替え http://php.o0o0.jp/article/2762045468664638 ブラウザ毎のUser Agentの切り替え方法 install jQuery Ajax http://php.o0o0.jp/article/jquery-ajax jQueryでAjax(POST/JSON)通信 reference

PHP

/** * * PHP経由でデータを元にCSV生成 * * @param string $file_name * @param string $load_nam */ function loadCSV($file_name, $load_name = '') { // 存在チェック if (! file_exists($file_name)) { exit; } // 読込許可をチェック if (! is_readable($file_name)) { exit; } $contents = file_get_contents($file_name); // 改行で分割 $lines = explode("\n", $contents); // ロードするファイル名が未定義の場合は日付.csv if (empty($load_name)) { $load_name = date('ymd') . '.csv'; } // CSVヘッダ header('Cache-Control: public'); header('Pragma: public'); header('Content-Type: text/octet-stream'); header('Content-Disposition: attachment; filename=' . $load_name); // タイトル行(1行目) echo mb_convert_encoding("番号,タイトル,URI,概要,ジャンル,\r\n", 'SJIS', 'UTF-8'); // 以下内容 if (! empty($lines)) { foreach($lines as $linesKey => $linesVal) { $linesVal = trim($linesVal); if (! empty($linesVal)) { // 採番 $serial = $linesKey + 1; // タブ区切りを分割 list($title, $link, $description, $category) = explode("\t", $linesVal); // SJISに設定 echo mb_convert_encoding("" . $serial . "," . $title . "," . $link . "," . $description . "," . $category . "\r\n", 'SJIS', 'UTF-8'); } } } exit; }

Ⅰや①などの特殊文字がCSVに含まれている場合は、SJISではなくSJIS-WINを使用し文字化けを回避する。

サンプル

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。主にLAPP環境でPHPを書いています。最近はjQueryで遊んでいます。
※動作確認について