php 导出csv 转义 逗号转义,(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常...

http://blog.csdn.net/thefirstwind/archive/2008/05/09/2422715.aspx 很多人通过拼字符串,直接使用fwrite来写CSV文件,这样固然没有错,但是如果遇到允许引号和逗号出现的情况,恐怕就显得非常麻烦了。 例如: $csvDate = 中文,日文,韩文,西班牙','文,阿拉

http://blog.csdn.net/thefirstwind/archive/2008/05/09/2422715.aspx

很多人通过拼字符串,直接使用fwrite来写CSV文件,这样固然没有错,但是如果遇到允许引号和逗号出现的情况,恐怕就显得非常麻烦了。

例如:

$csvDate = "中文,日文,韩文,西班牙','文,阿拉伯文";

$srcDir = '/workspace/CSVList';

$srcFile = $srcDir.date("Ymd").".csv";

if(!is_dir($srcDir)){

$fh = fopen($srcFile,'wb');

fwrite($fh,$csvDate);

fclose($fh);

}

我们想要得CSV文件是这样的格式中文

日文

韩文

西班牙','文

阿拉伯文

但是由于,西班牙文中有单引号和逗号

实际上在Excel中是这样的

中文

日文

韩文

西班牙'

阿拉伯文

解决方法一般来说就是使用转义符来进行赋值,不过如果遇到海量数据的情况下,这样的办法是不可取的。

下面推荐使用array_push和fputcsv相结合的方法来解决该问题。

这里通过程序来说明:

test.jsp?url=http%3A%2F%2Fimages.csdn.net%2Fsyntaxhighlighting%2FOutliningIndicators%2FNone.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fthefirstwind%2Farchive%2F2008%2F05%2F09%2F2422715.aspx$srcDir='/workspace/UnLockList/';

test.jsp?url=http%3A%2F%2Fimages.csdn.net%2Fsyntaxhighlighting%2FOutliningIndicators%2FNone.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fthefirstwind%2Farchive%2F2008%2F05%2F09%2F2422715.aspx(!is_dir($srcDir) )&&(mkdir($srcDir,0777)&&chmod($srcDir,0777)) ;

test.jsp?url=http%3A%2F%2Fimages.csdn.net%2Fsyntaxhighlighting%2FOutliningIndicators%2FNone.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fthefirstwind%2Farchive%2F2008%2F05%2F09%2F2422715.aspx$srcFile=$srcDir.date("Ymd").'.csv';

test.jsp?url=http%3A%2F%2Fimages.csdn.net%2Fsyntaxhighlighting%2FOutliningIndicators%2FNone.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fthefirstwind%2Farchive%2F2008%2F05%2F09%2F2422715.aspxtest.jsp?url=http%3A%2F%2Fimages.csdn.net%2Fsyntaxhighlighting%2FOutliningIndicators%2FNone.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fthefirstwind%2Farchive%2F2008%2F05%2F09%2F2422715.aspx

test.jsp?url=http%3A%2F%2Fimages.csdn.net%2Fsyntaxhighlighting%2FOutliningIndicators%2FNone.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fthefirstwind%2Farchive%2F2008%2F05%2F09%2F2422715.aspx$rs0=GetCSVData($PRDBConn); //UnLockTN_Request返回的是二维数组test.jsp?url=http%3A%2F%2Fimages.csdn.net%2Fsyntaxhighlighting%2FOutliningIndicators%2FNone.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fthefirstwind%2Farchive%2F2008%2F05%2F09%2F2422715.aspx$fh=fopen($srcFile,'wb');

test.jsp?url=http%3A%2F%2Fimages.csdn.net%2Fsyntaxhighlighting%2FOutliningIndicators%2FNone.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fthefirstwind%2Farchive%2F2008%2F05%2F09%2F2422715.aspx

test.jsp?url=http%3A%2F%2Fimages.csdn.net%2Fsyntaxhighlighting%2FOutliningIndicators%2FNone.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fthefirstwind%2Farchive%2F2008%2F05%2F09%2F2422715.aspxif(count($rs0)){

test.jsp?url=http%3A%2F%2Fimages.csdn.net%2Fsyntaxhighlighting%2FOutliningIndicators%2FNone.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fthefirstwind%2Farchive%2F2008%2F05%2F09%2F2422715.aspx fputcsv($fh,split(',',"申請ID,機種名,EB-№,申請№,部品名,LockUser"));

test.jsp?url=http%3A%2F%2Fimages.csdn.net%2Fsyntaxhighlighting%2FOutliningIndicators%2FNone.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fthefirstwind%2Farchive%2F2008%2F05%2F09%2F2422715.aspxforeach($rs0as$line0){

test.jsp?url=http%3A%2F%2Fimages.csdn.net%2Fsyntaxhighlighting%2FOutliningIndicators%2FNone.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fthefirstwind%2Farchive%2F2008%2F05%2F09%2F2422715.aspx fputcsv($fh,$line0);

test.jsp?url=http%3A%2F%2Fimages.csdn.net%2Fsyntaxhighlighting%2FOutliningIndicators%2FNone.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fthefirstwind%2Farchive%2F2008%2F05%2F09%2F2422715.aspx }

test.jsp?url=http%3A%2F%2Fimages.csdn.net%2Fsyntaxhighlighting%2FOutliningIndicators%2FNone.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fthefirstwind%2Farchive%2F2008%2F05%2F09%2F2422715.aspx}

test.jsp?url=http%3A%2F%2Fimages.csdn.net%2Fsyntaxhighlighting%2FOutliningIndicators%2FNone.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fthefirstwind%2Farchive%2F2008%2F05%2F09%2F2422715.aspx

test.jsp?url=http%3A%2F%2Fimages.csdn.net%2Fsyntaxhighlighting%2FOutliningIndicators%2FNone.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fthefirstwind%2Farchive%2F2008%2F05%2F09%2F2422715.aspxfputcsv($fh,array());

test.jsp?url=http%3A%2F%2Fimages.csdn.net%2Fsyntaxhighlighting%2FOutliningIndicators%2FNone.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fthefirstwind%2Farchive%2F2008%2F05%2F09%2F2422715.aspxtest.jsp?url=http%3A%2F%2Fimages.csdn.net%2Fsyntaxhighlighting%2FOutliningIndicators%2FNone.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fthefirstwind%2Farchive%2F2008%2F05%2F09%2F2422715.aspx

test.jsp?url=http%3A%2F%2Fimages.csdn.net%2Fsyntaxhighlighting%2FOutliningIndicators%2FNone.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fthefirstwind%2Farchive%2F2008%2F05%2F09%2F2422715.aspxfclose($fh);

test.jsp?url=http%3A%2F%2Fimages.csdn.net%2Fsyntaxhighlighting%2FOutliningIndicators%2FNone.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fthefirstwind%2Farchive%2F2008%2F05%2F09%2F2422715.aspxchmod($srcFile,0666);

function GetCSVData ($PRDBConn){

$RETURN_ARRAY = array();

//数据库连接

.....

.....

$RS01 = 记录集;

foreach ($RS01 AS $ROW01){

$line = array();

array_push($line,$ROW01["ID"]);

array_push($line,$ROW01["NAME"]);

array_push($line,$ROW01["NO"]);

.......

array_push($RETURN_ARRAY,$line);

}

return $RETURN_ARRAY;

}

test.jsp?url=http%3A%2F%2Fimages.csdn.net%2Fsyntaxhighlighting%2FOutliningIndicators%2FNone.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fthefirstwind%2Farchive%2F2008%2F05%2F09%2F2422715.aspx

如上程序所示,就可以解决大量数据输出成CSV文件中,出现特殊意义字符,导致输出CSV文件格式异常的问题了。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值