2016-05-31 6 views
0

Я использую ниже код для экспорта многомерного массива. Я использую рамки CodeIgniter (2.1.0 Version)Экспорт csv-файла из массива

Проблемы:

  1. У меня нет каких-либо двойные кавычки/одиночные кавычки в массив, но в файле CSV некоторые поля имеют двойные кавычки.

  2. Каждый файл CSV дать мне первые две заготовки линии, то содержимое можно увидеть

КОД:

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

Спасибо за ответ. Но этот я уже пробовал, вы можете видеть в коде. –

Смежные вопросы