質問編集履歴

4

修正

2017/04/09 03:43

投稿

ssk
ssk

スコア332

title CHANGED
File without changes
body CHANGED
@@ -14,9 +14,6 @@
14
14
  ###コード全文
15
15
  ```PHP
16
16
  if($this->request->query('csv') === 'true'){
17
- // フィルタを登録
18
- stream_filter_register("eolFilter", "eol_filter");
19
- stream_filter_register("encodeFilter", "encode_filter");
20
17
 
21
18
  //ビューを使わない
22
19
  $this->autoRender = false;

3

追記

2017/04/09 03:43

投稿

ssk
ssk

スコア332

title CHANGED
File without changes
body CHANGED
@@ -8,4 +8,45 @@
8
8
 
9
9
  エラーメッセージから文字コードの検索ができていないようなんですが、書き方が間違っているのでしょうか?
10
10
 
11
- [こちら](http://nob-log.info/2012/04/17/stream_filter_mbstring/)を参考に実装いたしました。
11
+ [こちら](http://nob-log.info/2012/04/17/stream_filter_mbstring/)を参考に実装いたしました。
12
+
13
+
14
+ ###コード全文
15
+ ```PHP
16
+ if($this->request->query('csv') === 'true'){
17
+ // フィルタを登録
18
+ stream_filter_register("eolFilter", "eol_filter");
19
+ stream_filter_register("encodeFilter", "encode_filter");
20
+
21
+ //ビューを使わない
22
+ $this->autoRender = false;
23
+
24
+ //Content-Typeを指定
25
+ $this->response->type('csv');
26
+
27
+ //download()内ではheader("Content-Disposition: attachment; filename=hoge.csv")を行っている
28
+ $this->response->download("テスト.csv");
29
+
30
+ $fp = fopen('php://output','w');
31
+ //$fp = fopen('php://temp/maxmemory:'.(5*1024*1024),'a');
32
+
33
+ //CSVをエクセルで開くことを想定して文字コードをSJISへ変換する設定を行う
34
+ $filter_name = 'convert.mbstring.encoding.UTF-8:SJIS-win';
35
+ stream_filter_append($fp, $filter_name, STREAM_FILTER_WRITE);
36
+
37
+ foreach ($query as $row) {
38
+ $csvArray[] = [
39
+ $row->id,
40
+ $row->author,
41
+ $row->datetime,
42
+ $row->status,
43
+ ];
44
+ }
45
+
46
+ foreach($csvArray as $key => $value){
47
+ fputcsv($fp, $value);
48
+ }
49
+
50
+ fclose($fp);
51
+ }
52
+ ```

2

追記

2017/04/09 03:17

投稿

ssk
ssk

スコア332

title CHANGED
File without changes
body CHANGED
@@ -3,7 +3,9 @@
3
3
  stream_filter_append(): unable to create or locate filter "convert.mbstring.encoding.UTF-8:sjis-win"
4
4
  ```
5
5
 
6
- エクセル見れるようにするために文字コードを変換しています。
6
+ PHPCSV出力するために文字コードを変換しています。
7
7
  UTF8→sjis-win
8
8
 
9
- 文字コードの検索ができていないようなんですが、書き方が間違っているのでしょうか?
9
+ エラーメッセージから文字コードの検索ができていないようなんですが、書き方が間違っているのでしょうか?
10
+
11
+ [こちら](http://nob-log.info/2012/04/17/stream_filter_mbstring/)を参考に実装いたしました。

1

編集

2017/04/09 02:59

投稿

ssk
ssk

スコア332

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