从CSV中删除行,然后使用PHP输出(下载)

时间:2012-07-04 15:27:09

标签: php csv simple-html-dom

我有一个数组:

$remove_rownumbers = array(1, 4, 7, 9, 2);

这些是rownumbers,我希望从PHP中加载的CSV中删除。

现在我想通过一个计数器和一个in_array if语句遍历这些行:

$row = 1;
if (($handle = fopen($CSV_FILE, "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1500, ",")) !== FALSE) {
       if(in_array($row, $remove_rownumbers) == false) // if its not in the remove array, keep it
       {
         // (...) the output part, where im echoing out each row by foreach($data ...)
       }
       $row++;
    }
}

但是如何才能获取现在输出的回声并将其再次保存为CSV正确?这样,数组中的行号就不在这个新的

我找到了一个类似的开头:

header('Content-Encoding: UTF-8');
header('Content-type: application/ms-excel; charset=utf-8');
header('Content-Disposition: attachment; filename=output.csv');
echo "\xEF\xBB\xBF"; 
$fp = fopen("php://output", "w");

1 个答案:

答案 0 :(得分:0)

您需要fopen()一个新的CSV文件并获取句柄,但这很简单:

$row = 1;

if ( ($handle = fopen($CSV_FILE, "r")) !== FALSE ) {

    while ( ($data = fgetcsv($handle, 1500, ",")) !== FALSE ) {

        if ( in_array($row, $remove_rownumbers) == false ) {
            fputcsv($newFile, $data);
        }
        $row++;
    }
}

我忘记了你要下载它的位置。使用重定向标头到新文件。

header("Location: http://www.example.com/newfile.csv");