(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常的问题解决
www.diybl.com 时间 : 2008-05-15 作者:佚名 编辑:本站 点击: [ 评论 ]
本文地址: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文件是这样的格式
| 中文 | 日文 | 韩文 | 西班牙'',''文 | 阿拉伯文 |
| 中文 | 日文 | 韩文 | 西班牙'' | 文 | 阿拉伯文 |
这里通过程序来说明:
$srcDir = ''/workspace/UnLockList/'';
( !is_dir($srcDir) ) && (mkdir($srcDir, 0777) && chmod($srcDir,0777)) ;
$srcFile = $srcDir . date("Ymd") . ''.csv'';

$rs0 = GetCSVData($PRDBConn); //UnLockTN_Request返回的是二维数组
$fh = fopen($srcFile, ''wb'');
if(count($rs0)){
fputcsv($fh,split('','',"申請ID,機種名,EB-№,申請№,部品名,LockUser"));
foreach($rs0 as $line0 ){
fputcsv($fh,$line0);
}
}
fputcsv($fh,array());

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