如何将数组放入CSV文件并将其回显到href中


How to put array into CSV file and echo it out into an href?

我想把一个数组放入一个csv文件中,并在一个href链接中回显它,即该文件,以便在按下该链接时下载它。我该怎么做?

我有这个代码:

header('Content-Type: application/excel');
header('Content-Disposition: attachment; filename="sample.csv"');
$data = array(
        'aaa,bbb,ccc,dddd',
        '123,456,789',
        '"aaa","bbb"'
);
$fp = fopen('php://output', 'w');
foreach ( $data as $line ) {
    $val = explode(",", $line);
    fputcsv($fp, $val);
}
fclose($fp);

如果我使用这个,它会直接为我下载一个包含我的数组的csv文件。如何将其放入href链接?谢谢

您可以使用GET参数来决定是像现在这样生成文件内容,还是使用附加的GET参数生成带有同一页面链接的HTML。

类似以下内容:

if (isset($_GET('download')) {
    // your original code:
    header('Content-Type: application/excel');
    header('Content-Disposition: attachment; filename="sample.csv"');
    $data = array(
            'aaa,bbb,ccc,dddd',
            '123,456,789',
            '"aaa","bbb"'
    );
    $fp = fopen('php://output', 'w');
    foreach ( $data as $line ) {
        $val = explode(",", $line);
        fputcsv($fp, $val);
    }
    fclose($fp);
} else {
    // get current page URL and append the download parameter
    $href = $_SERVER['PHP_SELF'] . "?download=1";
    // output the HTML hyperlink, which will lead to the above `if` code
?>
    <a href="<?=$href?>">download CSV</a>
<?php
}
?>

上面的代码假设您的"非下载"请求没有任何URL参数,否则您需要添加带有与号的download参数。如果您在URL中使用散列字符,您还应该管理该散列字符。