[PHP-dev 606] Re: fgetcsv関数について

Masumitsu Hatta php-dev@php.gr.jp
Fri, 22 Nov 2002 00:42:54 +0900


八田です

早速のご意見ありがとうございます

fgetcsv関数では何を持って行末コードとして見ているか
ソースのほうからも確認してみます

※ NEWSの内容を直訳して見ると、たとえ"でquoteされてても、
 行末コードはレコードの区切りとしますよって読み取れるので
 仕様変更くさいですが・・^^;

On Fri, 22 Nov 2002 00:28:21 +0900
Moriyoshi Koizumi <moriyoshi@at.wakwak.com> wrote:

> そうですね、確かめていないのでなんともいえないのですが、
> 改行コードの問題のような気がします。
> 
> Access から吐き出される csv => \r\n
> PHP で扱えるもの => \n のみ
> 
> 改行コードを変換してトライしてみてください。どうでしょうか?
> これで上手くいけば、これもバグといえばバグといえると思います。
> 
> Masumitsu Hatta <hatta@ja3.so-net.ne.jp> wrote:
> 
> > 八田です
> > 
> > php4-STABLE-200211210630.tar.bz2をコンパイルして
> > これまで作ったスクリプトを実行して気づいたことがあります
> > 
> > それは、いつの間にやらfgetcsv関数の実装が変わっていた
> > ことです。
> > 
> > しっかりと、NEWSには下記のように記載されていたのですが、
> > 
> > -- ここから --
> > - The fgetcsv() function now handles embedded end-of-line in a quoted field
> >   (Nick Talbott)
> > -- ここまで --
> > 
> > "でquoteされているフィールドでも行末'\n'があった場合はフィールドの区切り
> > と見なすようになっているようです。
> > 
> > おかげで、ACCESSから出力した'\n'を含むフィールドが途中で切れてしまい、次
> > の行になっていたため、バッチ処理が失敗するようになりました。
> > 
> > "働かざるもの食うべからず"とは思いますが、残念ながら元に戻すパッチを作る
> > 今のところ技量がありません。
> > fgetcsvをPHPスクリプトで実現する関数をjp2.php.netにあるドキュメントへ
> > のコメントから引っ張ってきて使ってみましたが、やはりスピードに非常に
> > 難があり実用は難しそうでした。
> > 
> > このような場合、頑張ってパッチを作るしかないのでしょうか?
> > あるいは、うまくこの実装変更に対応する方法があるのでしょうか?
> > 
> > 皆様のご意見を伺えれば幸いです
> > 

-- 
Masumitsu Hatta