【发布时间】:2021-10-18 20:37:36
【问题描述】:
我正在编写一个函数来将我的数据导出到 csv。 我想要的是每个数据都应该用双引号引起来。 在我发现问题之前它工作正常:
输出如下正常数据为例
"Hello";"1232323";
显示正常。只有数据之间有空格时才会出现问题
"Hello world"
在引号前后加一个空格和一个空格。
谁能帮助我如何删除这个多余的空间,或者我做错了什么,
protected function outputCSV($data, $delimeter = ';',$enclosure = " ") {
$output = fopen("php://output", "w");
foreach ($data as $row) {
fputcsv($output, $row,$delimeter, $enclosure);
}
fclose($output);
}
public function ExportCsv($id)
{
if(!$id) return false;
/* Headers */
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=result_file.csv");
header("Pragma: no-cache");
header("Expires: 0");
/* get Reiseverlauf Data */
$rf = $this->getReiseVerlaufByDatasetId($id);
if($rf[0]){
foreach ($rf as $rv){
$dataata[] = array('"'.date("d.m.y l", strtotime($rv['date_from'])).'"','"'.date("d.m.y", strtotime($rv['date_to'])).'"','"'.$rv["service"].'"','"'.$rv["location"].'"');
}
}
$this->outputCSV($data, ";" , " " );
exit ;
}
【问题讨论】:
-
$dataata应该是$data吗? -
$enclosure = " "应该是$enclosure = "" -
如果您处理
$dataata,那么它会添加双引号,而您不希望这样。还有为什么你默认使用" "作为enclosure而不是双引号? -
当我将附件更改为“” fputcsv() 时,它给了我这个错误:附件必须是一个字符,如果我使用 '"' 这作为 eclosure,它会给我 3 qouted 中的所有内容,如 """你好"""