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を使用し文字化けを回避する。
サンプル