アプリ版:「スタンプのみでお礼する」機能のリリースについて

phpで下記のファイルの「たちつつと」を「たちつてと」にかえる方法を教えてください。
つまり、fputで指定した行(こんかいなら4行目)のみ書き換えの手段を学習したいのです。

a.txt
あいうえお
かきくけこ
さしすせそ
たちつつと
なにぬねの


よろしくお願いします。

A 回答 (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.l … http://d.hatena.ne.jp/keyword/%A5%D5%A5%E9%A5%B0
    • good
    • 0
この回答へのお礼

フラグと言う言葉初めて知りました。
勉強になりました。

またなにかの際はよろしくお願いします。
有難うございました。

お礼日時:2006/09/11 02:19

こんな感じでしょうか。



$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

この回答への補足

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

補足日時:2006/09/08 02:11
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!