[PHP-users 26813] Re: ファイルの取扱いについて

info@kcs2000.jp info @ kcs2000.jp
2005年 9月 8日 (木) 13:53:44 JST


神田です。

以前経験しましたが、fgetcsvは大変便利なのですが、動作環境に
よってはおっしゃるとおりの不具合が生じるようです。例えば、
カタカナの「ソ」(SJISで0x835c...0x5cが「\」なので,直後の
ダブルコーテーションをエスケープすると解釈されてしまうのか)
で終わる列についても同様の現象が起きました。

この問題はかなり前から広く問題視されてきているようですが、
動作環境によって状況が異なるようです。FedoraCoreの場合駄目
なようです。php.iniのmbstringのエンコーディングを正しく設
定しても回避できませんでした。

面倒でも、fgets + explode がよろしいようです。

ところで、私も正しい回避策を知りたいところです。

> 現時点ではCSVみたいに使おうかなっと思ってます。
> FGetCsvが便利そうなので、、
> PHP4.3.1ではCSVでの書込みはハンドリング(「"」や「,」の付加)する必要が
> あるみたいですが、、、
>
> 項目(フィールド)中に「"」があると、FGetCsvで読み込んだ時に「"」がカッ
> トされているようです。 また、ひとつの項目中で「"」の後方に「,」がある
> とFGetCsvで読み込んだ時、「,」位置でフィールドが分割されます。
> 書き込み時に項目中の「"」を何かに置き換えて書き込み、読込み時に戻せ
> ばいいのかなっと思っています。
> が、FGetSとExplodeの組み合わせの方が一般的なのでしょうか?
> 置き換え文字等対処策でご経験のある方、サジェッション頂けないでしょ
> うか。 他にいい方法があれば教えて頂けないでしょうか?




PHP-users メーリングリストの案内