- ベストアンサー
■が増えていく。
ログファイルに文字を書き込むという単純な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<>■■■■■ となります。なぜこういった現象が起こるかがわかりません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
windows の PHP は fopen('xx.xxx','w') で開くと \n を \r\n に変換してしまうようです 書くたびに CR コードが増えていくのでメモ帳で開くと四角く化けて出ます fopwn('xx.xxx','wb') とバイナリモードで開けば大丈夫だと思います (バージョンによって動作が異なるので fopen では w だけでなく、tとbを用途に合わせて追加することが推奨されてます)
その他の回答 (1)
- kusukusu
- ベストアンサー率38% (141/363)
fputs($FILE,ereg_replace("\r\n","\n",$log)); とやってみてはどうですか?
お礼
無事解決しました ありがとうございます
お礼
ありがとうございます。 アドバイスを元に無事解決いたしました てことはUNIX環境ではこの問題は起こらいのでしょうか? 試してみます