簡體   English   中英

如何從 PHP 中的 CSV 文件中刪除空行?

[英]How to remove empty lines from CSV file in PHP?

我的 output.csv 文件有問題。 這就是它目前的樣子。 我可以創建一個已修改的新 csv 文件或僅修改此 csv 文件,但不確定如何處理 go。

cn,mail,telephonenumber,uid
,,,
admin,,,
"Isaac Newton",newton@ldap.forumsys.com,,newton
"Albert Einstein",einstein@ldap.forumsys.com,314-159-2653,einstein
"Nikola Tesla",tesla@ldap.forumsys.com,,tesla

我希望 output 成為

cn,mail,telephonenumber,uid
admin,,,
"Isaac Newton",newton@ldap.forumsys.com,,newton
"Albert Einstein",einstein@ldap.forumsys.com,314-159-2653,einstein
"Nikola Tesla",tesla@ldap.forumsys.com,,tesla

如您所見,第二行已完全刪除。 我嘗試了以下方法,但它不起作用(這是從php 中的 CSV 文件中刪除空白行

$lines = file("output.csv", FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);
$num_rows = count($lines);
foreach ($lines as $line) {
    $csv = str_getcsv($line);
    if (count(array_filter($csv)) == 0) {
        $num_rows--;
    }
}

編輯:

這是我目前的 PHP

            $filename = "output.csv";
            header('Content-Type: text/csv');
            header('Content-Disposition: attachment; filename="' . $filename . '"');

            $file = fopen("ad.csv","r");

            while(! feof($file))
              {
              print_r(fgets($file));
              }
            fclose($file);

所以基本上,我有一個名為“ad.csv”的 csv 文件,其中包含我需要放入“output.csv”的信息。 我想知道您將如何編輯 output.csv 以便在編輯后發送下載以刪除空行?

目前,由於底部附有 Nigel 的代碼,它不會編輯輸出的 csv 文件。

如果當您確定一個空行時,您可以從原始數組中的行中刪除該行。 然后將所有剩余的行放回同一個文件中......

$lines = file("output.csv", FILE_SKIP_EMPTY_LINES );
$num_rows = count($lines);
foreach ($lines as $lineNo => $line) {
    $csv = str_getcsv($line);
    if (count(array_filter($csv)) == 0) {
        unset($lines[$lineNo]);
    }
}
file_put_contents("output.csv", $lines);

我已刪除FILE_IGNORE_NEW_LINES以便將新行保留在數組中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM