投稿

ラベル(BOM)が付いた投稿を表示しています

【PHP】多言語のデータをCSVに出力する

イメージ
多言語のテキストを含むデータをCSVファイルに出力して、さらにエクセルで開いて編集したいという要件があったのでその時の対応メモです。 多言語データの処理 データ データのイメージとしては以下です。配列に読み込まれた様々な言語のデータをファイルに出力する際の例です。 $data = [ array( 'id' => 1, 'name_ja-JP' => 'テスト', 'name_en-US' => 'test', 'name_zh-CN' => '测验', 'name_ko-KR' => '테스트', ), array( 'id' => 2, 'name_ja-JP' => '茄子', 'name_en-US' => 'eggplant', 'name_zh-CN' => '雄狮', 'name_ko-KR' => '가지', ), ]; NGケース ファイル出力処理 最初は以下のようなコードでした。 エクセルで編集という要件から、Shift-JISに変換して出力しています。 $handle = fopen('data.csv', 'w'); foreach($data as $row){ array_walk($row, function(&$item){ $item = mb_convert_encoding($item, 'Shift-JIS', 'UTF8'); }); fputcsv($handle, $row); } fclose($handle); エクセルで開く 日本語以外のマル