質問編集履歴

4

修正

2017/04/09 03:43

投稿

ssk
ssk

スコア332

test CHANGED
File without changes
test CHANGED
@@ -29,12 +29,6 @@
29
29
  ```PHP
30
30
 
31
31
  if($this->request->query('csv') === 'true'){
32
-
33
- // フィルタを登録
34
-
35
- stream_filter_register("eolFilter", "eol_filter");
36
-
37
- stream_filter_register("encodeFilter", "encode_filter");
38
32
 
39
33
 
40
34
 

3

追記

2017/04/09 03:43

投稿

ssk
ssk

スコア332

test CHANGED
File without changes
test CHANGED
@@ -19,3 +19,85 @@
19
19
 
20
20
 
21
21
  [こちら](http://nob-log.info/2012/04/17/stream_filter_mbstring/)を参考に実装いたしました。
22
+
23
+
24
+
25
+
26
+
27
+ ###コード全文
28
+
29
+ ```PHP
30
+
31
+ if($this->request->query('csv') === 'true'){
32
+
33
+ // フィルタを登録
34
+
35
+ stream_filter_register("eolFilter", "eol_filter");
36
+
37
+ stream_filter_register("encodeFilter", "encode_filter");
38
+
39
+
40
+
41
+ //ビューを使わない
42
+
43
+ $this->autoRender = false;
44
+
45
+
46
+
47
+ //Content-Typeを指定
48
+
49
+ $this->response->type('csv');
50
+
51
+
52
+
53
+ //download()内ではheader("Content-Disposition: attachment; filename=hoge.csv")を行っている
54
+
55
+ $this->response->download("テスト.csv");
56
+
57
+
58
+
59
+ $fp = fopen('php://output','w');
60
+
61
+ //$fp = fopen('php://temp/maxmemory:'.(5*1024*1024),'a');
62
+
63
+
64
+
65
+ //CSVをエクセルで開くことを想定して文字コードをSJISへ変換する設定を行う
66
+
67
+ $filter_name = 'convert.mbstring.encoding.UTF-8:SJIS-win';
68
+
69
+ stream_filter_append($fp, $filter_name, STREAM_FILTER_WRITE);
70
+
71
+
72
+
73
+ foreach ($query as $row) {
74
+
75
+ $csvArray[] = [
76
+
77
+ $row->id,
78
+
79
+ $row->author,
80
+
81
+ $row->datetime,
82
+
83
+ $row->status,
84
+
85
+ ];
86
+
87
+ }
88
+
89
+
90
+
91
+ foreach($csvArray as $key => $value){
92
+
93
+ fputcsv($fp, $value);
94
+
95
+ }
96
+
97
+
98
+
99
+ fclose($fp);
100
+
101
+ }
102
+
103
+ ```

2

追記

2017/04/09 03:17

投稿

ssk
ssk

スコア332

test CHANGED
File without changes
test CHANGED
@@ -8,10 +8,14 @@
8
8
 
9
9
 
10
10
 
11
- エクセル見れるようにするために文字コードを変換しています。
11
+ PHPCSV出力するために文字コードを変換しています。
12
12
 
13
13
  UTF8→sjis-win
14
14
 
15
15
 
16
16
 
17
- 文字コードの検索ができていないようなんですが、書き方が間違っているのでしょうか?
17
+ エラーメッセージから文字コードの検索ができていないようなんですが、書き方が間違っているのでしょうか?
18
+
19
+
20
+
21
+ [こちら](http://nob-log.info/2012/04/17/stream_filter_mbstring/)を参考に実装いたしました。

1

編集

2017/04/09 02:59

投稿

ssk
ssk

スコア332

test CHANGED
@@ -1 +1 @@
1
- PHPでCSVインポートする時にエラー
1
+ PHPでCSV出力する時にエラー
test CHANGED
File without changes