これは、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にエクスポートし、ロシア語の文字を正しく表示する方法)はありますか?