2016-05-31 21 views
0

私は以下のコードをエクスポート多次元配列に使用しています。配列からCSVファイルをエクスポートする

  1. 私は、アレイ内の任意の二重引用符/単一引用符全くないが、CSVファイルの一部のフィールドは、二重引用符を持っている:私はCodeIgniterのフレームワーク(2.1.0版)

    の問題を使用しています。

  2. 一人ひとりcsvファイルには、私が見ることができる最初の2つのラインそして空白内容を与える

CODE:

function array_to_csv($array, $download = "") { 
    if ($download != "") { 
     header('Content-Type: text/csv'); 
     header('Content-Disposition: attachement; filename="'.$download. 
      '"'); 
     header("Pragma: no-cache"); 
     header("Expires: 0"); 
    } 

    ob_start(); 
    $f = fopen('php://output', 'w') or show_error("Can't open php://output"); 
    $n = 0; 
    foreach($array as $line) { 
     $line = str_replace('"', '', $line); //Try to resolve first problem but it doesn't work for me. 
     $n++; 
     if (!fputcsv($f, $line)) { 
      show_error("Can't write line $n: $line"); 
     } 
    } 
    fclose($f) or show_error("Can't close php://output"); 
    $str = ob_get_contents(); 
    ob_end_clean(); 

    if ($download == "") { 
     return $str; 
    } else { 
     echo $str; 
    } 
} 
+0

上記のコードでコードを最適化する必要がある場合は、私に提案してください。 –

+0

あなたには少し複雑すぎます。なぜ、ob_startなどですべてのことをやっているのですか?ヘッダーを送信したら、各行をphp://出力に直接書き込むことができます。私はなぜあなたが開始時に空白行を取得しているのかわかりません –

答えて

0

ここに呼び出してみてください:

$line = str_replace('"', '', $line) 

トリム機能を。

+0

返信ありがとうございます。しかし、これはすでに私があなたがコードで見ることができますしようとしました。 –

関連する問題