[PHP-users 16678]Re: ログファイルの改行について
UNO Shintaro
uno @ venus.dti.ne.jp
2003年 7月 14日 (月) 17:03:12 JST
>最近PHPをを始めて、さっそく掲示板をがんばってみました。
んー、自作しなくてもPHP用掲示板スクリプトなんて山ほど転がってると
思いますが、わざわざ自分で書く理由は? 「お勉強」ですか?
>削除すると、ログファイルの末尾に改行が毎回増えて、
>もう何日も考えたり調べたり(もちろんML検索も)しましたが
>わからないんです。。。
file読み込みloopのところで、終了判定方法が間違ってます。
最後の行を読んだ直後にはまだfeofはtrueにはなりません。
最後の行の「次」をfgetcsvで読もうとするとfgetcsvがfalseを返します。
その後でfeofを調べるとtrueになっています。
aikoさんのcodeは「最後の行を読んだ直後に既にfeofがtrueになっている」と
いう間違った前提の元で書かれているようで、最終行の処理の次にもう一回、
余計にloop内処理が行なわれます。そのときのfputs($ichigo,$data)において
$dataの中身は、false(file末尾でのfgetcsvの結果)をexplodeしてimplode
して改行をくっつけたものなので、結果として空行が追加されます。
なので、
> while(!feof($fp)){
> $data =fgetcsv($fp,1024);
:
:
> fputs($ichigo,$data);
>
> }
> fclose($ichigo);
> fclose($fp);
↑こうではなくて、↓こんな感じ(エラー判定などは略してますが)
while($data = fgetcsv($fp,1024)){
:
:
fputs($ichigo,$data);
}
fclose($ichigo);
fclose($fp);
にすれば現象は解消されると思います。
--
UNO Shintaro, 宇野 信太郎
mailto:uno @ venus.dti.ne.jp
http://www.venus.dti.ne.jp/~uno/
PHP-users メーリングリストの案内