0

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

4

0 に答える 0