こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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);

投稿日時 - 2005-02-22 15:39:39

QNo.1231923

すぐに回答ほしいです

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

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

投稿日時 - 2005-02-24 12:04:13

お礼

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

投稿日時 - 2005-02-24 19:46:28

このQ&Aは役に立ちましたか?

7人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

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

投稿日時 - 2005-02-22 19:39:42

お礼

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

投稿日時 - 2005-02-24 19:45:55

あなたにオススメの質問