[PHP-users 22373]Re: CSVのHTTPアップロードで文字化け

Moriyoshi Koizumi moriyoshi @ at.wakwak.com
2004年 6月 24日 (木) 16:35:14 JST


小泉です。

前のメールがあまりにも等閑でしたので、補足します。

> PHP3 における対応方法はありません。
> PHP4 にしても、あさかわさんのおっしゃるとおり、
> \x5c (=\記号/バックスラッシュ) を見つけると無条件にエスケープと
> 判断する仕様のため、根本的な解決法はありません。

上記の「対応方法はありません」、とは fgetcsv() 単体に関しての話で、
自分で fgetcsv() に相当する関数を用意して対処することはもちろん可能です。

次のチェックポイントを元に作ってみてはいかがでしょうか

a. 入力される CSV ファイルのフィールド (列) は、ダブルクオーテーション
   などで囲まれることがある
b. 入力される CSV ファイルのフィールドには、改行文字が含まれることが
   ある
c. 入力される CSV ファイルのフィールドには、デリミタ文字 (カンマ) が
   含まれることがある

a. b. c. いずれにも該当しないならば、単純に fgets() で一行読み込んだのち 
split() 関数で一行分のデータをフィールド単位に分割するだけでほとんどの場
合うまく機能するでしょう。

それ以外の場合はやや複雑になるでしょう。




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