函数:
PHP有自带的分析.csv函数:fgetcsv
array fgetcsv ( int $handle [, int $length [, string $delimiter [, string $enclosure]]] )
handle 一个由 fopen()、popen() 或 fsockopen() 产生的有效文件指针。
length (可选)必须大于 CVS 文件内最长的一行。在 PHP 5 中该参数是可选的。如果忽略(在 PHP 5.0.4 以后的版本中设为 0)该参数的话,那么长度就没有限制,不过可能会影响执行效率。
delimiter (可选)设置字段分界符(只允许一个字符),默认值为逗号。
enclosure (可选)设置字段环绕符(只允许一个字符),默认值为双引号。该参数是在 PHP 4.3.0 中添加的。 和 fgets() 类似,只除了 fgetcsv() 解析读入的行并找出 CSV 格式的字段然后返回一个包含这些字段的数组。
fgetcsv() 出错时返回 FALSE,包括碰到文件结束时。
注意: CSV 文件中的空行将被返回为一个包含有单个 null 字段的数组,不会被当成错误。
fputcsv() ,fputcsv(file,fields,seperator,enclosure) .函数将行格式化为 CSV 并写入一个打开的文件。
该函数返回写入字符串的长度。若出错,则返回 false。。
1.CSV的读取操作
- <?php
- $file= fopen( 'D:/file/file.csv' , 'r' );
- while ($data =fgetcsv($file)){ //每次读取CSV里面的一行内容
- print_r($data);//此为一个数组,要获得每一个数据,访问数组下标即可
- }
- fclose($file);
- ?>
<?php $file = fopen('D:/file/file.csv','r');while ($data = fgetcsv($file)) { //每次读取CSV里面的一行内容 print_r($data);//此为一个数组,要获得每一个数据,访问数组下标即可 } fclose($file); ?>
2.CSV的写入操作
- <?php
- $fp= fopen( 'd:/file/file.csv' , 'w' );
- fputcsv($fp,array ('aaa' ,'bbb' ,'cccc' ));
- fputcsv($fp,array ('mmm' ,'yyy' ,'haha' )); //fputcsv可以用数组循环的方式进行实现
- fclose($fp);
- ?>
<?php $fp = fopen('d:/file/file.csv', 'w');fputcsv($fp,array('aaa','bbb','cccc'));fputcsv($fp,array('mmm','yyy','haha')); //fputcsv可以用数组循环的方式进行实现fclose($fp); ?>
3.输出CSV(下载功能)
- <?php
- header( "Content-Type: text/csv" );
- header("Content-Disposition: attachment;filename=test.csv" );
- header('Cache-Control:must-revalidate,post-check=0,pre-check=0' );
- header('Expires:0' );
- header('Pragma:public' );
- echo"id,areaCode,areaName " ;
- echo"1,cn,china " ;
- echo"2,us,America " ;
- ?>