私はこのコードをCSVファイルを読むために持っています。 Iは、配列の配列にキーのヘッダ列の最初の行を使用しようとすると、最初の列「タイプ」は、BOMが含まれているためBOMを使用してPHPでUTF CSVファイルを読むにはどうすればよいですか?
$csv = array_map('str_getcsv', file($file));
var_dump($csv[0][0]).PHP_EOL;
...
echo $a['Type'];exit;
しかし、私はエラーを取得します。 BOMはファイルの内容に含まれており、次に配列キーに含まれています。文字列 'Type'は、BOM <U+FEFF>
を含んでいるため、4ではなく7文字と考えています。
文字列(7)メッセージと "タイプ"
PHPお知らせ 'のYii \ベースの\ ErrorException' '未定義のインデックス:タイプ'
file()
関数はUTFのためのオプションがありません。 file()
を使用してUTFファイルを読み取るにはどうすればよいですか?
シュート。私は、Javaストリームのようなファイルエンコーディングを設定できることを期待していました。私は '$ csv = array_map(function($ line){ } str_getcsv(str_replace("¥xEF¥xBB¥xBF "、 '$ line));#strip BOM }、file($ file)を返します。 ' – Chloe
ええ、良いか悪いかにかかわらず、PHPエンジンはファイルをバイトストリームとして扱う基礎となるCライブラリを薄く覆い隠すので、ファイルレベルの知識はエンジンレベルにはありません。別に、あなたのソリューションは、どこの行であっても、どこにあっても望ましくないかもしれないBOMシーケンスを取り除きます(str_replaceの場合は1つ、str_getcsvの場合はもう1つ)。望ましくない可能性もある。 – bishop