2014-02-01 3 views
0

Я использую эту функцию я нашел здесь, на StackOverflowУдалить пустые строки из CSV Экспорт в PHP

How to create and download a csv file from php script?

function array_to_csv_download($array, $filename = "export.csv", $delimiter=";") { 
    $f = fopen('php://output', 'w'); 

    foreach ($array as $line) { 
     fputcsv($f, $line, $delimiter); 
    } 

    header('Content-Type: application/csv'); 
    header('Content-Disposition: attachement; filename="'.$filename.'";'); 
} 

Проблема в файле экспорта я сейчас 4 дополнительные пустые строки.

Как я могу исправить эту функцию, чтобы предотвратить эти дополнительные линии.

Array ( 

[0] => Array ([start] => 001-F15:B2:1-F [dest] => 002-F15:B2:5-Y [rres_1] => 100 [rres_2] => 100 [rres_3] => 100 [runit_1] => 0 [runit_2] => 0 [runit_3] => 0 [runit_4] => 0 [runit_5] => 0 [runit_6] => 0 [worker] => 0 [duration] => 12) 

[1] => Array ([start] => 001-F15:B2:1-F [dest] => 005-F15:A5:3-M [rres_1] => 0 [rres_2] => 0 [rres_3] => 0 [runit_1] => 100 [runit_2] => 100 [runit_3] => 100 [runit_4] => 0 [runit_5] => 0 [runit_6] => 0 [worker] => 0 [duration] => 12) 

[2] => Array ([start] => 006-F15:E4:2-Y [dest] => 004-F15:A5:1-Y [rres_1] => 0 [rres_2] => 0 [rres_3] => 0 [runit_1] => 0 [runit_2] => 0 [runit_3] => 0 [runit_4] => 100 [runit_5] => 100 [runit_6] => 100 [worker] => 100 [duration] => 12) 
) 

Эти строки печатаются в export.csv правильно

сейчас полный код:

function array_to_csv_download($array, $filename = "export.csv", $delimiter=";") { 
    header('Content-Type: application/csv'); 
    header('Content-Disposition: attachement; filename="'.$filename.'";'); 

    // open the "output" stream 
    // see http://www.php.net/manual/en/wrappers.php.php#refsect2-wrappers.php-unknown-unknown-unknown-descriptioq 
    $f = fopen('php://output', 'w'); 

    foreach ($array as $line) { 
     fputcsv($f, $line, $delimiter); 
    } 
} 
$sql='SELECT p1.planet_name AS start, p2.planet_name AS dest, rres_1, rres_2, rres_3, runit_1, runit_2, runit_3, runit_4, runit_5, runit_6, worker, duration FROM traderoute tr 
     INNER JOIN planets p1 ON p1.planet_id=tr.start_planet 
     INNER JOIN planets p2 ON p2.planet_id=tr.dest_planet 
     WHERE player_id='.$game->player['user_id']; 
$export=$db->queryrowset($sql); 
array_to_csv_download($export); 
die(); 
+0

Эти дополнительные линии в начале, в конце, разбросаны между другими линиями? –

+0

в начале –

+0

Если они в начале, есть ли что-нибудь в вашем коде до вызова этой функции, которая выводит что-нибудь? echo или print, или пустые строки за пределами тегов PHP? Увидев, что первые несколько записей в вашем массиве содержат данные, увеличивает вероятность того, что это является причиной –

ответ

0

Попробуйте проверить на пустую строку, как это:

foreach ($array as $line) { 
    if(trim($line)!="") 
    { 
     fputcsv($f, $line, $delimiter); 
    } 
} 
+0

это не работает –

+0

Можете ли вы включить весь свой код? – SyntaxLAMP

+1

Несомненно 'if (! Empty (trim ($ line))) {...}' будет охватывать больше возможностей и быть более чистым –

0

мне нужно для очистки строк после закрытия PHP ?> тега во включенных PHP-файлах. Затем пустые строки в файле csv исчезли.

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