公司跟一家新廠商展開合作,其中交換電文是用 CSV 格式。但對方要求所有的欄位都要用 ” 雙引號包起來。看起來就像下圖這樣。
但是很不巧的,PHP 內建產生 CSV 的指令 fputcsv 沒有提供強制的選項。做出來的檔案如下圖。
山不轉只好路轉…
在丟進 fputcsv 前就先用雙引號包一包。
<?php
function forceQuote($value) {
return "\"$value\"";
}
$file = @fopen($file_path, "w");
foreach ($data['content'] as $line) {
fputcsv(
$file, // 輸出檔名
array_map('forceQuote', $line), // 先包雙引號
',', // 資料用逗號分隔
chr(0) // 跳脫預設的 enclosure 字元
);
}
fclose($file);
比較特別是 fputcsv
原本的 enclosure 字元預設就是雙引號,無法替換成空白,只好用 chr(0)
來跳脫,不然每一筆資料會變成 """aaa"""
,三個引號…
這樣就可以交差了。
Leave a Reply Cancel reply