如何将数组放入CSV文件并将其回显为href?

时间:2016-01-12 20:52:58

标签: php arrays file csv

我想将一个数组放入一个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链接?感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用GET参数来决定是否像现在一样生成文件内容,或者使用指向同一页面的链接生成HTML,但使用其他GET参数。

如下所示:

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中使用哈希字符,则还应管理哈希字符。