php操作利用内置函数写入和读取csv文件

日期:2021-11-02 20:53:13    浏览:120

php输出流

php://output 是一个只写的数据流, 允许你以 print 和 echo 一样的方式 写入到输出缓冲区。

header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename="test.csv"');
$output = fopen('php://output','w') or die("Can't open php://output");
//UTF8 csv文件头前需添加BOM,不然会是乱码
fwrite($output, chr(0xEF).chr(0xBB).chr(0xBF));
// 输出标题行
fputcsv($output, array('站点名', '域名', '行业'));
//数据内容
$rows = array(
    array('天猫', 'http://tmall.com', '电子商务')
,array('爱E族', 'http://aiezu.com', '互联网技术')
,array('腾讯', 'http://qq.com', '社交网络')
);
foreach($rows as $row) {
    fputcsv($output, $row);
}
fclose($output) or die("Can't close php://output");

 

将文件保存到服务器

$output = fopen('demo.csv','w') or die("Can't open php://output");
//UTF8 csv文件头前需添加BOM,不然会是乱码
fwrite($output, chr(0xEF).chr(0xBB).chr(0xBF));
// 输出标题行
fputcsv($output, array('站点名', '域名', '行业'));
//数据内容
$rows = array(
    array('天猫', 'http://tmall.com', '电子商务')
,array('爱E族', 'http://aiezu.com', '互联网技术')
,array('腾讯', 'http://qq.com', '社交网络')
);
foreach($rows as $row) {
    fputcsv($output, $row);
}


fclose($output) or die("Can't close php://output");

 

读取csv文件

fgetcsv文件每次读取一行,反复调用,即可遍历读取整个tab表

$handle = fopen('demo.csv', 'r') or die("Can't open php://output");

$data=fgetcsv($handle);
$data =iconv('gbk','utf-8',var_export($data,true));
var_dump($data);

$data=fgetcsv($handle);
$data =iconv('gbk','utf-8',var_export($data,true));
var_dump($data);

$row=0;
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $num = count($data);
    echo "<p> $num fields in line $row: <br /></p>\n";
    $row++;
    for ($c = 0; $c < $num; $c++) {
        echo iconv('gbk','utf-8',$data[$c] ). "<br />";
    }
}

Tags: php

世事无常

要有遥不可及的梦想,也要有脚踏实地的本事