首页 > 后端开发 > php教程 > 如何以编程方式从 PHP 数组下载 CSV 文件?

如何以编程方式从 PHP 数组下载 CSV 文件?

DDD
发布: 2024-11-10 13:33:02
原创
902 人浏览过

How to Programmatically Download CSV Files from a PHP Array?

如何从 PHP 脚本创建和下载 CSV 文件

概述

本文旨在提供用于创建和下载 CSV 文件的全面解决方案PHP 数组中的 CSV(逗号分隔值)文件。作为新手程序员,您可能需要帮助来实现此功能。

生成 CSV 行

要从 PHP 数组生成 CSV 行,您可以使用内置的 fputcsv() 函数,该函数将数组转换为适合 CSV 的格式化字符串:

$f = fopen("tmp.csv", "w");
foreach ($array as $line) {
    fputcsv($f, $line);
}
登录后复制

HTTP 标头下载

要从浏览器启动文件下载,发送适当的 HTTP 标头至关重要。其中一个标头是:

header('Content-Disposition: attachment; filename="filename.csv";');
登录后复制

此标头通知浏览器响应包含具有指定文件名的文件附件。

将其全部放在一起

组合 CSV行生成和 HTTP 标头,您可以创建一个用于下载 CSV 的函数:

function array_to_csv_download($array, $filename = "export.csv", $delimiter = ";") {
    // Open a memory file for efficient handling without temporary files.
    $f = fopen('php://memory', 'w'); 
    // Generate CSV lines and write them to the memory file.
    foreach ($array as $line) { 
        fputcsv($f, $line, $delimiter); 
    }
    // Reset the file pointer to begin sending the file.
    fseek($f, 0);
    // Set CSV-related HTTP headers.
    header('Content-Type: text/csv');
    header('Content-Disposition: attachment; filename="'. $filename . '";');
    // Output the generated CSV lines to the browser for download.
    fpassthru($f);
}
登录后复制

用法示例

要使用此函数,只需传递您的数组和所需的文件名:

array_to_csv_download(array(
  array(1, 2, 3, 4), // First row
  array(1, 2, 3, 4) // Second row
), "numbers.csv");
登录后复制

替代输出选项

作为写入内存文件的替代方法,您可以还使用 php://output 作为文件描述符,消除了文件查找的需要:

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

    // Open the php://output stream for direct output.
    $f = fopen('php://output', 'w');

    foreach ($array as $line) {
        fputcsv($f, $line, $delimiter);
    }
}   
登录后复制

以上是如何以编程方式从 PHP 数组下载 CSV 文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板