12

ユーザーが PHP 経由でアップロードした CSV ファイルを解析しようとしていますが、正しく動作していません。

適切にフォーマットされた CSV をいくつかアップロードしましたが、問題なく動作しました。多くのユーザーが Excel からエクスポートした CSV ファイルをインポートしようとしていますが、問題が発生しています。ファイルを私のファイルと比較したところ、Excel ファイルにはすべて、エントリの前後に引用符がないことに気付きました。それを除けば、それらは同一です。それを開いて Open Office で保存すると、何も変更せずに動作します。だから私はそれが引用符に関連しているとかなり確信しています.

私の質問は; これらの不適切な形式の CSV を読み取るにはどうすればよいですか?

追記:原因判明!

これは、Excel の Mac バージョンに固有のものです。Mac では何らかの理由で改行の処理が異なるため、fgetcsv を使用する前にこれを行う必要があります。

ini_set('auto_detect_line_endings',TRUE);
4

2 に答える 2

22

これは、Excel の Mac バージョンに固有のものです。Mac では何らかの理由で改行の処理が異なるため、fgetcsv を使用する前にこれを行う必要があります。

ini_set('auto_detect_line_endings',TRUE);
于 2010-03-09T20:43:36.377 に答える
1

のマニュアル ページをfgetcsv見ると、そのプロトタイプは次のようになっています。

array fgetcsv  ( resource $handle  [, int $length  
    [, string $delimiter = ','  [, string $enclosure = '"' 
    [, string $escape = '\\'  ]]]] )

$enclosure (4 番目のパラメータ)のデフォルト値は二重引用符です。

その 4 番目のパラメーターに空の文字列を指定して、エンクロージャーが不要であることを指定しようとするとどうなりますか?

(もちろん、これは現在動作しているものを壊す可能性があります-つまり、2つの別々のケースに対処する必要があります:二重引用符で囲まれたフィールドを持つファイルと、最初のケースで読み取れなかったファイル)

于 2010-02-23T19:34:49.110 に答える