• ベストアンサー

fread

fread関数を使用し、下記のように 同じファイルに上書きしているのですが。。。。 freadで取得したデータの全角コロンを半角コロンに置き換える。 その後、全角空白を半角空白におきかえる。 そのおきかえたデータを同じファイルの上書きする。 どうもコロン(:)のところがうまく書き変えられていません。。。。 おきかえた後に、print文で出力すると置き換えられているのですが、、、 この現象がわかる方教えていただけませんか?? $body=fread(fopen($fileName, "r"),filesize($fileName)); $txt=str_replace(":", ":",$body); $txt=mb_convert_kana($txt, "s","SJIS"); $fp = fopen($fileName, "w"); chmod($fileName,0777); flock($fp, LOCK_EX); fputs ($fp, $txt); flock($fp, LOCK_UN); fclose($fp);

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

  • ベストアンサー
  • unimentai
  • ベストアンサー率70% (34/48)
回答No.2

手持ちの環境で再現出来なかったので外しているかもしれませんが・・・。 fputs()で上書きする前にftruncate()でファイルを丸めてみてはどうでしょうか?

aiurai54
質問者

お礼

やってみます。 ありがとうございます。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

あまり自信はないですが freadした時の"r"でのfopenを"w"でfopenする前にfcloseしないといけないのではないかと思います。

aiurai54
質問者

お礼

クローズし忘れていました。 ひとまず、ファイルをクローズしたのですが、現象はかわりませんでした。。。

関連するQ&A