原生php通過fopen,fwrite匯出多種格式的檔案
阿新 • • 發佈:2019-02-08
<?php
/**
* Created by PhpStorm.
* User: Jason0727
* Date: 2018/8/9
* Time: 14:48
*/
header("Content-Type: text/html;charset=utf-8");
//定義檔名
$fileName = "測試檔名_" . date('YmdHis');//檔名中間不能有空格
//檔名轉碼,以防亂碼
$fileName = iconv('UTF-8','GBK',$fileName);
///檔案字尾
$ext = ".csv";
//$ext = ".txt";
//欄位間的拼接符號
//$dot = "|";
$dot = ",";
//開啟檔案控制代碼,記得賦權,否則報錯
$fp = fopen("./files/" . $fileName . $ext,"a") or die("unable to open file!");
//是否需要列表名稱,0=>不需要 1需要,預設為1
$is_need_headerList = 1;
//檢測是否需要headerList
if($is_need_headerList == 1){
//定義列表名稱
$headerList = ['列表1','列表2','列表3'];
//初始化寫入檔案的字串
$headerTxt = "";
//列表名稱轉碼
foreach ($headerList as $v){
$headerTxt .= $v. $dot;
}
$headerTxt = rtrim($headerTxt,$dot)."\n";
//將列表名稱寫入檔案控制代碼
fwrite($fp, $headerTxt);
}
//初始化陣列資料
$data = [
['id'=>'值1','name'=>'值2','hobby'=>'值3'],
['id'=>'值11','name'=>'值22','hobby'=>'值33'],
['id'=>'值111' ,'name'=>'值222','hobby'=>'值333']
];
//迴圈寫入資料
//初始化陣列的總數
$count = count($data);
//迴圈次數
$limit = 0;
foreach ($data as $v){
$limit++;
$txt = $v['id'] .$dot . $v['name'] .$dot .$v['hobby'];
if($count != $limit)//避免最後一次換行
$txt .= $dot .PHP_EOL;
fwrite($fp,$txt);
}
fclose($fp);