PHP导入导出csv文件

简介: 2017年11月9日09:25:56 根据项目实践总结的一个类文件, mac/win下没乱码 简体中文 默认从gb2312转到utf-8 https://gitee.com/myDcool/PHP-CSV   用法: 1 // 导入: 2 $arr = CSV::import($f...

2017年11月9日09:25:56

根据项目实践总结的一个类文件, mac/win下没乱码

简体中文 默认从gb2312转到utf-8

https://gitee.com/myDcool/PHP-CSV

 

用法:

1 // 导入:
2 $arr = CSV::import($filepath);
3 
4 // 导出:
5 $data = ['filename' => 'xxx', 'list' => [[xx,xx,x], [xx,xx,x]]];
6 CSV::export($data);

 

 1 <?php
 2 
 3 class CSV
 4 {
 5     public static $csvError = '';
 6     
 7     public static function _SetError($error)
 8     {
 9         self::$csvError = $error;
10     }
11     
12     /**
13      * 读取csv文件成数组
14      * @param string $filePath 文件路径
15      * @return array|bool
16      */
17     public static function import($filePath)
18     {
19         setlocale(LC_ALL, 'zh_CN');
20     
21         if(!file_exists($filePath) || !is_readable($filePath)) {
22             self::_SetError('文件不存在或者不可读');
23             return FALSE;
24         }
25     
26         $rows = array();
27         $fp = fopen($filePath, 'rb');
28         while (!feof($fp)) {
29         
30             $row = str_replace(array("\r\n", "\r", "\n"), '', fgets($fp));
31             $rows[] = explode(',', iconv('GB2312', 'UTF-8', $row)); //简体中文编码转为 utf-8, gbk 兼容gb2312
32         
33         }
34         return $rows;
35     }
36     
37     /**
38      * 输出 UTF-8 编码的csv文件
39      * @param array $data  ['filename' => 'xxx', 'list' => [[xx,xx,x], [xx,xx,x], ....]]
40      * @return bool
41      */
42     public static function export($data)
43     {
44         if (empty($data['filename']) || empty($data['list'])) {
45             self::_SetError('缺少参数filename/list');
46             return FALSE;
47         }
48         $filename = $data['filename']; //文件名
49     
50         header("Expires: 0");
51         header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate");
52         // 强制下载
53         header("Content-Type: application/force-download");
54         header("Content-Type: application/octet-stream");
55         header("Content-Type: application/download");
56         // disposition / encoding on response body
57         header("Content-Disposition: attachment;filename={$filename}");
58         header("Content-Transfer-Encoding: binary");
59     
60         //设置utf-8 + bom ,处理汉字显示的乱码
61         echo(chr(0xEF).chr(0xBB).chr(0xBF));
62     
63         //打开输出缓存
64         ob_start();
65     
66         //打开输出流
67         $df = fopen("php://output", 'w');
68     
69         //数据写入缓存
70         foreach ($data['list'] as $row) {
71             foreach ($row as $k => $v) {
72                 is_numeric($v) && ($row[$k] .= "\t"); //防止变为科学计数法显示
73             }
74             fputcsv($df, $row);
75         }
76     
77         fclose($df);
78         echo ob_get_clean();
79         exit;
80     }
81 }
View Code

 

目录
相关文章
|
3月前
|
存储 运维 Serverless
函数计算产品使用问题之在YAML文件中配置了环境变量,但在PHP代码中无法读取到这些环境变量,是什么原因
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2天前
|
存储 安全 数据库连接
php.ini 文件的用途是什么?
【8月更文挑战第29天】
8 1
|
22天前
|
PHP
PHP遍历文件并同步上传到服务器
在进行网站迁移时,由于原网站的图片文件过多,采用打包下载再上传的方式耗时过长,且尝试使用FTP工具从旧服务器传输至新服务器时失败。为解决此问题,特使用PHP编写了一款工具,该工具能扫描指定目录下的所有`.webp`图像文件,并将其上传至新的服务器,极大地提高了迁移效率。
61 16
|
19天前
|
Java 应用服务中间件 PHP
PHP——调用java文件中的方法
PHP——调用java文件中的方法
35 0
PHP——调用java文件中的方法
|
25天前
|
PHP
php怎么循环读取文件夹里的文件
`DirectoryIterator`类提供了一个接口来遍历文件系统目录。与 `glob`函数相比,使用 `DirectoryIterator`类可以获得更多文件属性信息,如文件大小、修改时间等,从而进行更复杂的文件处理操作。
12 0
|
2月前
|
API PHP UED
​一个PHP文件实现联系表单自动发送邮件
使用PHP和AOKSend服务,可以创建一个联系表单,收集用户信息并自动发送邮件。HTML表单包含姓名、邮箱和消息字段。PHP文件`send_mail.php`处理表单提交,通过AOKSend的SMTP设置(如主机、端口、API密钥)使用PHPMailer发送邮件到指定地址。代码中还包括安全措施,如使用`htmlspecialchars`防止XSS攻击。这种方法增强了网站的用户沟通体验,并依赖AOKSend的稳定性和API进行高效邮件发送。
|
3月前
|
PHP
php 上传大文件获取失败问题
php 上传大文件获取失败问题
21 0
php 上传大文件获取失败问题
|
3月前
|
SQL 监控 安全
代码审计-PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析
代码审计-PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析
|
3月前
|
PHP
php+ajax传file文件数据
php+ajax传file文件数据
30 0
|
4月前
|
安全 PHP 数据库
【PHP开发专栏】PHP文件包含漏洞与防范
【4月更文挑战第30天】本文探讨了PHP文件包含漏洞,该漏洞让攻击者能执行恶意代码或访问敏感信息。文章分为三部分:原理、影响和防范。文件包含函数(如`include`和`require`)在攻击者控制文件名时可能导致漏洞。影响包括执行恶意代码、泄露敏感信息和影响服务器性能。防范措施包括验证文件名安全性、使用安全包含函数、设置安全包含路径和参数,以及定期更新和维护代码及库。开发者应重视此问题,采取相应措施保障应用安全。
106 0
下一篇
云函数