• ベストアンサー

■が増えていく。

ログファイルに文字を書き込むという単純なphpファイル(uho.php)について、 ******* <?php $LINES = file('log.dat'); if ($_POST['write']) write(); function write(){   global $LINES;   $contents = $_POST['contents'];   $data = "$contents<>\n";   array_unshift($LINES, $data);   $FILE = fopen('log.dat', 'w');   $log= implode("",$LINES);   fputs($FILE,$log);   fclose($FILE); } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS"> </head> <body> <form method="post" action="uho.php"> <textarea name="contents" cols="60" rows="5"></textarea><br> <input type=submit name=write value=aaaa> </form> <? for($i=0; $i<count($LINES) ; $i++) print $LINES[$i]."<br>"; ?> </body> </html> ***** と記述しました。 phpエディタは、「phpエディタ standalone」を使用していて、文字コードはEUCがいいとのことですが、参考にしているサイトのPHPスクリプトがShift_JIS形式で作成しているようなので、とりあえずShift_JISで保存しています。ApacheやPHP等の環境を一気にインストールできる「phpdev423」を用いてWin XP上で走らせていることにより動作確認をしています。 それで困っていることがあるのですが、どうやら文字を転送すると、ログファイルをメモ帳でひらくと、 aaaa<> bbbb<> cccc<>■ dddd<>■■ eeee<>■■■ ffff<>■■■■ という風に■が並んでいきます。実際の■ではなく、これより幾分か小さい黒い正方形が表示されます。 このログファイルにさらにもじを書き足した場合、 1111<> aaaa<> bbbb<>■ cccc<>■■ dddd<>■■■ eeee<>■■■■ ffff<>■■■■■ となります。なぜこういった現象が起こるかがわかりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • schwarzes
  • ベストアンサー率51% (15/29)
回答No.1

windows の PHP は fopen('xx.xxx','w') で開くと \n を \r\n に変換してしまうようです 書くたびに CR コードが増えていくのでメモ帳で開くと四角く化けて出ます fopwn('xx.xxx','wb') とバイナリモードで開けば大丈夫だと思います (バージョンによって動作が異なるので fopen では w だけでなく、tとbを用途に合わせて追加することが推奨されてます)

arcsin
質問者

お礼

ありがとうございます。 アドバイスを元に無事解決いたしました てことはUNIX環境ではこの問題は起こらいのでしょうか? 試してみます

その他の回答 (1)

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.2

fputs($FILE,ereg_replace("\r\n","\n",$log)); とやってみてはどうですか?

arcsin
質問者

お礼

無事解決しました ありがとうございます