在实际开发中,经常遇到帮数据导出表格操作。今天我们来讲下导出csv格式方式,这种是最快捷的、占用资源少的方法。这里简单介绍下csv格式,每一行数据间使用 换行符分割,每一列值之间通过逗号分割。这里要注意下 值里面可能含有特殊字符,如果不进行相关转义操作,会造成解析错误。下面也会提供解决方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | function quoteCsvField( $str , $force =false){ if ( $force || strpos ( $str , ',' )!==false || strpos ( $str , '"' ) !==false || strpos ( $str ,"\n ") !==false || strpos($str," \n") !==false){ $str = '"' . str_replace ( '"' , '""' , $str ). '"' ; } return $str ; } //--数据,这里简单表示下 $result = array ( array ( 'brands' => '游乐园' , 'dename' => '旅游部' , 'appdate' => '2020-05' , 'remark' => "游乐园项目\n详情:3月签约,4月回款1000" ), array ( 'brands' => '房产中介' , 'dename' => '房产' , 'appdate' => '2020-04' , 'remark' => "已回款" ), ); header( "Content-type:text/csv" ); $filename = '上线广告' ; header( "Content-Disposition:attachment;filename=" . $filename . ".csv" ); header( 'Cache-Control:must-revalidate,post-check=0,pre-check=0' ); header( 'Expires:0' ); header( 'Pragma:public' ); $html = '品牌,部门,时间,备注说明' . "\n" ; foreach ( $result as $k => $v ) { $html .= $v [ 'brands' ]. ',' . $v [ 'dename' ]. ',' . $v [ 'appdate' ]. ',' .quoteCsvField( $v [ 'remark' ]). "\n" ; } echo $html ; die ; |
对可能有特殊字符的值进行 quoteCsvField函数进行处理,如果不确定的话,可以都进行处理,不影响。
友情提示:垃圾评论一律封号...