• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPで特定の文字列のみ抽出し、変換する。)

PHPで特定の文字列のみ抽出し、変換する方法

このQ&Aのポイント
  • PHPを使用して、textファイルから特定の文字列を抽出し、変換する方法について教えてください。
  • 現在、textファイルのすべての文字列を変換して新しいファイルに出力していますが、特定の文字列だけを抽出する方法が分かりません。
  • 特定の文字列だけを抽出して変換し、新しいファイルに出力する方法をPHPで実装したいです。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.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); ?>

daisuke_Arai
質問者

お礼

上記のプログラムを参考にさせて頂きましたところ、出来なかった部分がうまく動きました。 初心者の私にわかりやすく教えて頂きありがとうございます!

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

行に完全一致が必要なら改行マークまでチェックしないといけませんね 「ライフ=恋愛人生相談」にヒットしても「ライフ=恋愛人生相談しない」には ヒットしないということです。 また完全一致するなら文字列の置き換えは先頭からのチェックだけでよいです <?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>"; } ?>

daisuke_Arai
質問者

補足

すいません。補足です。 ライフ=恋愛人生相談 デジタルライフ=結婚 などの情報は毎回テキストファイルから読み込みたいです。ブラウザ上ではなく、ファイルから読み込んで、そのデータを必要な分だけ抽出し変換し、新たにテキストファイルで出力したいです。 もう一つ、 ライフ=恋愛人生相談 デジタルライフ=結婚 趣味=出産育児 エンターテインメント=料理グルメ 美容健康=生活お役立ち ビジネスキャリア=家電製品 社会=住まい の=より右側の恋愛人生相談、結婚、出産育児、、、は毎回値が変わります。 例えば、二回目にファイルを読み込んだ時には ライフ=パソコン デジタルライフ=離婚 趣味=アルバイト エンターテインメント=旅行 美容健康=携帯 など、毎回右側だけ値が違っています。 なので、ライフだったら、ライフの一行全部を右側の値にかかわらずに読み込みたいです。 初心者なので伝わりづらい文章で申し訳ありません。宜しくお願い致します。

  • masa6272
  • ベストアンサー率66% (93/140)
回答No.1

特定の文字列って、何のことでしょう? 'ライフ='とかで始まる行という意味でしょうか? やりたいことをもっと、明確に書いてください。

daisuke_Arai
質問者

補足

そうです。 ライフ=恋愛人生相談の一列が私の言っている特定の文字列の事です。わかりづらくてすいません。 例えば、たくさんの文字列の中から、 ライフ=恋愛人生相談 趣味=出産育児 ビジネスキャリア=家電製品 の三つの文字列を抜き出したいのです。

関連するQ&A