本篇文章給大家帶來的內容是關於php利用open,fwrite實現匯出多種格式的檔案(代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所協助。
源碼分析
<?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;//檢測是否需要 headerListif($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);
常見問題分析
字串中含有特殊的字元,在編碼轉換時,需要設定//IGNORE,否則會報錯
$c = "測試•字元傳換•五一快樂!";echo iconv('UTF-8','GBK//IGNORE',$c);//測試字元傳換五一快樂!echo iconv('UTF-8','GBK',$c);//Detected an illegal character in input string
數字字串會出現格式化的情況,需要加如看不見的字元使其正常化,如:”\t”
轉碼問題,特殊情況,特殊處理,視情況而定
連結:https://pan.baidu.com/s/1SFB3lPooUYl-cVv4QovNkA 密碼:2o6b