php数组转换为csv / excel。 chr(255).chr(254).iconv(“UTF-8”,“UTF-16LE // IGNORE”,$ contents)无法正常工作

时间:2013-06-27 10:33:12

标签: php csv export

这是如何将php数据导出到csv的简短代码

$filename ="excelreport.csv";
$contents = "русский \t testdata2 \t testdata3 \t \n latviešu valoda \t 43.45 \t testdata3 \t \n";
header('Content-type: application/csv');
header('Content-Disposition: attachment; filename='.$filename);
echo chr(255).chr(254).iconv("UTF-8", "UTF-16LE//IGNORE", $contents);

这是将数组导出到csv

的简短代码
$data=array(
array("firstname" => "русский", "lastname" => "Johnson", "age" => 25),
array("firstname" => "Amanda", "lastname" => "Miller", "age" => 18),
);

$filename = "website_data_" . date('Ymd') . ".csv";

header('Content-type: application/csv');
header("Content-Disposition: attachment; filename=\"$filename\"");

$out = fopen("php://output", 'w');

foreach($data as $row) {
fputcsv($out, array_values($row), ',', '"');
}
fclose($out);
exit;

在第一个代码中有一个带有俄语字符的字符串,chr(255).chr(254).iconv("UTF-8", "UTF-16LE//IGNORE", $contents)可以处理字符串,因此俄语字符русский正确地显示在csv中。

以同样的方式尝试使用数组。

在输出中添加$data = (chr(255).chr(254).iconv("UTF-8", "UTF-16LE//IGNORE", $data));获取空白csv文件。

假设,确定,不适用于数组,但如第一个示例所示,必须使用字符串。所以将代码更改为此

foreach($data as $row) {
fputcsv($out, array_values((chr(255).chr(254).iconv("UTF-8", "UTF-16LE//IGNORE", $row))), ',', '"');
}

但也得到空白的csv文件。任何想法如何获得正确的csv文件(导出数组到csv并正确显示俄语字符)?

0 个答案:

没有答案