- ベストアンサー
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);
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
手持ちの環境で再現出来なかったので外しているかもしれませんが・・・。 fputs()で上書きする前にftruncate()でファイルを丸めてみてはどうでしょうか?
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
回答No.1
あまり自信はないですが freadした時の"r"でのfopenを"w"でfopenする前にfcloseしないといけないのではないかと思います。
質問者
お礼
クローズし忘れていました。 ひとまず、ファイルをクローズしたのですが、現象はかわりませんでした。。。
お礼
やってみます。 ありがとうございます。