[PHP-users 16686]Re: ログファイルの改行について

aiko FR3A-YN @ asahi-net.or.jp
2003年 7月 14日 (月) 20:05:40 JST


aikoです

できました!解決しましたーーーっ

On 2003.7.14, at 05:03  PM, UNO Shintaro wrote:

>> 最近PHPをを始めて、さっそく掲示板をがんばってみました。
>
> んー、自作しなくてもPHP用掲示板スクリプトなんて山ほど転がってると
> 思いますが、わざわざ自分で書く理由は? 「お勉強」ですか?

はい、勉強中です。PHPは楽しいと感じています。(ヘンかな?)

たいへん可愛いらしい掲示板を考えたので、(笑)
ちゃんと動いてほしかったのです。

お見せしたいところなんですがまだアイコンが完成していません。

> file読み込みloopのところで、終了判定方法が間違ってます。
> 最後の行を読んだ直後にはまだfeofはtrueにはなりません。
> 最後の行の「次」をfgetcsvで読もうとするとfgetcsvがfalseを返します。
> その後でfeofを調べるとtrueになっています。
>
> aikoさんのcodeは「最後の行を読んだ直後に既にfeofがtrueになっている」と
> いう間違った前提の元で書かれているようで、最終行の処理の次にもう一回、
> 余計にloop内処理が行なわれます。そのときのfputs($ichigo,$data)において
> $dataの中身は、false(file末尾でのfgetcsvの結果)をexplodeしてimplode
> して改行をくっつけたものなので、結果として空行が追加されます。

大変よくわかりました。
本当に、ありがとうございます。

> ↑こうではなくて、↓こんな感じ(エラー判定などは略してますが)
>
> 	while($data = fgetcsv($fp,1024)){
> 		:
> 		:
> 		fputs($ichigo,$data);
> 	}
> 	fclose($ichigo);
> 	fclose($fp);
>
> にすれば現象は解消されると思います。

これは、末石さんが教えてくれた2つめの方法と同じで、
わたしの希望通りの結果がでました。

whileの中には、こんな入れ方があったんですね。

さっき返信させていただいたときは、
まだわかっていませんでしたが今わかりました。

(末石さん、正解だったのに私がわかるのが遅くてすみませんでした・・)
(Setoさん、再びありがとうございます)


皆さん、とても親切にしてくださって
本当にありがとうございました。

はぁ〜よかった。。
もっと早く聞けばよかったです。
同じこと2週間は考えていました(マジで、気もながいっス)
あきらめ寸前でしたが復活です。


----------------
aiko
FR3A-YN @ asahi-net.or.jp



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