• ベストアンサー

fputの応用

phpで下記のファイルの「たちつつと」を「たちつてと」にかえる方法を教えてください。 つまり、fputで指定した行(こんかいなら4行目)のみ書き換えの手段を学習したいのです。 a.txt あいうえお かきくけこ さしすせそ たちつつと なにぬねの よろしくお願いします。

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

  • ベストアンサー
  • aqucent
  • ベストアンサー率39% (78/200)
回答No.2

> $flag = 1;にはどのような意味があるのでしょうか? 目的は「たちつつと」を「たちつてと」にかえることですが、ひょっとすると、「たちつつと」が全くない状況もあり得ます。 その場合は、ファイルに書き込み必要はないですよね? そのために、フラグ(旗)を立てます。 $flag が true を返すときには、ファイルに書き込むようにすればいいわけです。 if($flag && $fp = fopen($txt, 'r+')){...} でも、よく考えたら、$num の値チェックで十分でした。($flag の変数は不要でした) if($num && $fp = fopen($txt, 'r+')){...}

参考URL:
http://jp.php.net/manual/ja/language.operators.logical.php, http://d.hatena.ne.jp/keyword/%A5%D5%A5%E9%A5%B0
noname#20805
質問者

お礼

フラグと言う言葉初めて知りました。 勉強になりました。 またなにかの際はよろしくお願いします。 有難うございました。

その他の回答 (1)

  • aqucent
  • ベストアンサー率39% (78/200)
回答No.1

こんな感じでしょうか。 $txt = 'a.txt'; $encode = 'EUC-JP'; $lines = file($txt); mb_regex_encoding($encode); mb_internal_encoding($encode); foreach($lines as $key => $val){ if(mb_ereg('たちつつと', $val)){ $lines[$key] = mb_ereg_replace('たちつつと', 'たちつてと', $val); $num = $key + 1; $flag = 1; } } if($flag && $fp = fopen($txt, 'r+')){ fputs($fp, implode('', array_slice($lines, 0, $num))); fclose ($fp); } # 文字コードがUTF-8なら、mb_eregじゃなくてpregの方が楽です。

参考URL:
http://jp.php.net/manual/ja/ref.mbstring.php
noname#20805
質問者

補足

ありがとうございます。 10回くらい実際書いてやっと少し身に付きました。 ただ、$flag = 1;にはどのような意味があるのでしょうか?

関連するQ&A