- ベストアンサー
fputの応用
phpで下記のファイルの「たちつつと」を「たちつてと」にかえる方法を教えてください。 つまり、fputで指定した行(こんかいなら4行目)のみ書き換えの手段を学習したいのです。 a.txt あいうえお かきくけこ さしすせそ たちつつと なにぬねの よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> $flag = 1;にはどのような意味があるのでしょうか? 目的は「たちつつと」を「たちつてと」にかえることですが、ひょっとすると、「たちつつと」が全くない状況もあり得ます。 その場合は、ファイルに書き込み必要はないですよね? そのために、フラグ(旗)を立てます。 $flag が true を返すときには、ファイルに書き込むようにすればいいわけです。 if($flag && $fp = fopen($txt, 'r+')){...} でも、よく考えたら、$num の値チェックで十分でした。($flag の変数は不要でした) if($num && $fp = fopen($txt, 'r+')){...}
その他の回答 (1)
- aqucent
- ベストアンサー率39% (78/200)
こんな感じでしょうか。 $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の方が楽です。
補足
ありがとうございます。 10回くらい実際書いてやっと少し身に付きました。 ただ、$flag = 1;にはどのような意味があるのでしょうか?
お礼
フラグと言う言葉初めて知りました。 勉強になりました。 またなにかの際はよろしくお願いします。 有難うございました。