回答編集履歴

1

加筆修正

2019/10/24 10:48

投稿

退会済みユーザー
test CHANGED
@@ -41,3 +41,79 @@
41
41
 
42
42
 
43
43
  以上、ご確認ください。
44
+
45
+
46
+
47
+ ---
48
+
49
+
50
+
51
+ 示されたコードを自分なりに書き換えて動かしてみました。
52
+
53
+ 空白2文字が入る現象が再現されず、webサーバーのレスポンスヘッダーにへんな細工がされていたりしないか、
54
+
55
+ なんてオカルト的なことを疑いたくもなり。
56
+
57
+
58
+
59
+ ```php
60
+
61
+ <?php
62
+
63
+
64
+
65
+ $dataList = [];
66
+
67
+
68
+
69
+ //CSV形式で情報をファイルに出力のための準備
70
+
71
+ $csvFileName = __DIR__ . '/tmp' . time() . rand() . '.csv';
72
+
73
+ $res = fopen($csvFileName, 'w');
74
+
75
+ $array=['あ', 'い'];
76
+
77
+ $dataList[] = $array;
78
+
79
+ // ループしながら出力
80
+
81
+ foreach($dataList as $dataInfo) {
82
+
83
+ $line = implode(',' , $dataInfo);
84
+
85
+
86
+
87
+ // 文字コード変換。エクセルで開けるようにする
88
+
89
+ mb_convert_variables('SJIS', 'UTF-8', $line);
90
+
91
+
92
+
93
+ // ファイルに書き出しをする
94
+
95
+ fwrite($res, $line . "\n");
96
+
97
+ }
98
+
99
+ fclose($res);
100
+
101
+
102
+
103
+ // ダウンロード開始
104
+
105
+ header('Content-Type: application/octet-stream');
106
+
107
+
108
+
109
+ // ここで渡されるファイルがダウンロード時のファイル名になる
110
+
111
+ header('Content-Disposition: attachment; filename=sample.csv');
112
+
113
+ header('Content-Transfer-Encoding: binary');
114
+
115
+ header('Content-Length: ' . filesize($csvFileName));
116
+
117
+ readfile($csvFileName);
118
+
119
+ ```