dポイントプレゼントキャンペーン実施中!

PHPでtextファイルを呼び出し、そのtextのたくさんの文字列の中から特定の文字列を何個か抜き出して変換し、新しいファイルに出力したいです。

現在、textファイルを呼び出して文字列を変換し、新しいファイルに出力することはできたのですが、よけいな情報までも含めて出力してしまいます。
なので、特定の文字列だけを抜き出す方法を知りたいです。


例えばtextファイルの中身が以下だとします。

ライフ=恋愛人生相談
デジタルライフ=結婚
趣味=出産育児
エンターテインメント=料理グルメ
美容健康=生活お役立ち
ビジネスキャリア=家電製品
社会=住まい

その中から、まず、

ライフ=恋愛人生相談
趣味=出産育児
ビジネスキャリア=家電製品

を抜き出します。    ←ここが出来ません!

そして、左側のライフ、趣味、ビジネスキャリアの名前を適当に以下のように変え、

LIFE=恋愛人生相談
しゅみ=出産育児
びじねすきゃりあ=家電製品

この三つだけを新しいtextファイルに出力したいです。


自分が調べた限りでは、特定の文字列だけを抽出するやり方がわかりません。
PHPの初歩的な動きかもしれませんが、どなたか教えてください。

A 回答 (3件)

>ブラウザ上ではなく、ファイルから読み込んで、そのデータを必要な分だけ抽出し変換し、新たにテキストファイルで出力したいです。



そんなことは解ってますが、ロジックさえ書けば応用すると思ったもので。
じゃ、こんな感じで・・・

<?PHP
$pattern="/^(ライフ|趣味|ビジネスキャリア)=/";
$from=array("/^ライフ/","/^趣味/","/^ビジネスキャリア/");
$to=array("LIFE","しゅみ","びじねすきゃりあ");
$fp=fopen("test.txt","r");
$fp2=fopen("newfile.txt","w");
while (($line = fgets($fp)) !== false) {
if(preg_match($pattern,$line)) fwrite($fp2, preg_replace($from,$to,$line));
}
fclose($fp);
fclose($fp2);

?>
    • good
    • 0
この回答へのお礼

上記のプログラムを参考にさせて頂きましたところ、出来なかった部分がうまく動きました。

初心者の私にわかりやすく教えて頂きありがとうございます!

お礼日時:2011/08/17 14:43

行に完全一致が必要なら改行マークまでチェックしないといけませんね


「ライフ=恋愛人生相談」にヒットしても「ライフ=恋愛人生相談しない」には
ヒットしないということです。
また完全一致するなら文字列の置き換えは先頭からのチェックだけでよいです

<?PHP
$pattern="/^(ライフ=恋愛人生相談|趣味=出産育児|ビジネスキャリア=家電製品)\r*\n*$/";
$from=array("/^ライフ/","/^趣味/","/^ビジネスキャリア/");
$to=array("LIFE","しゅみ","びじねすきゃりあ");
$fp=fopen("test.txt","r");
while (($line = fgets($fp)) !== false) {
if(preg_match($pattern,$line)) echo preg_replace($from,$to,$line)."<br>";
}
?>

この回答への補足

すいません。補足です。


ライフ=恋愛人生相談
デジタルライフ=結婚
などの情報は毎回テキストファイルから読み込みたいです。ブラウザ上ではなく、ファイルから読み込んで、そのデータを必要な分だけ抽出し変換し、新たにテキストファイルで出力したいです。



もう一つ、

ライフ=恋愛人生相談
デジタルライフ=結婚
趣味=出産育児
エンターテインメント=料理グルメ
美容健康=生活お役立ち
ビジネスキャリア=家電製品
社会=住まい

の=より右側の恋愛人生相談、結婚、出産育児、、、は毎回値が変わります。


例えば、二回目にファイルを読み込んだ時には

ライフ=パソコン
デジタルライフ=離婚
趣味=アルバイト
エンターテインメント=旅行
美容健康=携帯

など、毎回右側だけ値が違っています。

なので、ライフだったら、ライフの一行全部を右側の値にかかわらずに読み込みたいです。


初心者なので伝わりづらい文章で申し訳ありません。宜しくお願い致します。

補足日時:2011/08/17 13:01
    • good
    • 0

特定の文字列って、何のことでしょう?



'ライフ='とかで始まる行という意味でしょうか?

やりたいことをもっと、明確に書いてください。

この回答への補足

そうです。
ライフ=恋愛人生相談の一列が私の言っている特定の文字列の事です。わかりづらくてすいません。

例えば、たくさんの文字列の中から、
ライフ=恋愛人生相談
趣味=出産育児
ビジネスキャリア=家電製品
の三つの文字列を抜き出したいのです。

補足日時:2011/08/16 19:55
    • good
    • 0

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