PHPでtextファイルを呼び出し、そのtextのたくさんの文字列の中から特定の文字列を何個か抜き出して変換し、新しいファイルに出力したいです。
現在、textファイルを呼び出して文字列を変換し、新しいファイルに出力することはできたのですが、よけいな情報までも含めて出力してしまいます。
なので、特定の文字列だけを抜き出す方法を知りたいです。
例えばtextファイルの中身が以下だとします。
ライフ=恋愛人生相談
デジタルライフ=結婚
趣味=出産育児
エンターテインメント=料理グルメ
美容健康=生活お役立ち
ビジネスキャリア=家電製品
社会=住まい
その中から、まず、
ライフ=恋愛人生相談
趣味=出産育児
ビジネスキャリア=家電製品
を抜き出します。 ←ここが出来ません!
そして、左側のライフ、趣味、ビジネスキャリアの名前を適当に以下のように変え、
LIFE=恋愛人生相談
しゅみ=出産育児
びじねすきゃりあ=家電製品
この三つだけを新しいtextファイルに出力したいです。
自分が調べた限りでは、特定の文字列だけを抽出するやり方がわかりません。
PHPの初歩的な動きかもしれませんが、どなたか教えてください。
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);
?>
上記のプログラムを参考にさせて頂きましたところ、出来なかった部分がうまく動きました。
初心者の私にわかりやすく教えて頂きありがとうございます!
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>";
}
?>
この回答への補足
すいません。補足です。
ライフ=恋愛人生相談
デジタルライフ=結婚
などの情報は毎回テキストファイルから読み込みたいです。ブラウザ上ではなく、ファイルから読み込んで、そのデータを必要な分だけ抽出し変換し、新たにテキストファイルで出力したいです。
もう一つ、
ライフ=恋愛人生相談
デジタルライフ=結婚
趣味=出産育児
エンターテインメント=料理グルメ
美容健康=生活お役立ち
ビジネスキャリア=家電製品
社会=住まい
の=より右側の恋愛人生相談、結婚、出産育児、、、は毎回値が変わります。
例えば、二回目にファイルを読み込んだ時には
ライフ=パソコン
デジタルライフ=離婚
趣味=アルバイト
エンターテインメント=旅行
美容健康=携帯
など、毎回右側だけ値が違っています。
なので、ライフだったら、ライフの一行全部を右側の値にかかわらずに読み込みたいです。
初心者なので伝わりづらい文章で申し訳ありません。宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Excel(エクセル) Excelのセル上の日付の不具合 3 2022/05/22 18:20
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Excel(エクセル) エクセルで重複データから重複を削除して指定の列に抽出したい 11 2022/05/11 11:26
- フリーソフト テキストファイル内を検索したい 1 2022/06/01 08:33
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイル名は、数字の「0」(...
-
二次元配列のソートのやり方が...
-
PHPでテキストファイルかどうか...
-
PHPでの別のサーバーのテキスト...
-
条件文について
-
2つの画像ファイルが異なるファ...
-
フォントの色を変えるには?
-
onedrive にexcelファイルをア...
-
PHPのif文でその処理を途中で抜...
-
透過PNGが透過されない!!
-
PHPで新しいウインドウで開く命...
-
データ送信をボタンを押さずに...
-
.phpと.incファイルの違いはな...
-
バッチを用いたフォルダの自動移動
-
copy() で属性保存
-
<A href ~ と一緒に値を渡すには
-
form actionで二つ送信先を指定...
-
3つ以上の論理積は利用可能なの...
-
別PHPファイルに変数を渡す
-
GDで生成したはずの画像が文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPでFilename cannot be empty...
-
2つの画像ファイルが異なるファ...
-
phpのftp_get()でエラーが出ます。
-
ファイルの行数取得
-
stat failed
-
ファイル名は、数字の「0」(...
-
XMLのロードに失敗する
-
日本語が文字化けしないよう読...
-
shift-jisでfgetcsv
-
別のサーバにあるファイルの存...
-
Smartyで吐き出されたhtmlソー...
-
PHPでテキストファイルかどうか...
-
PHPでの別のサーバーのテキスト...
-
PHPでAPI 出力はCSVを取得する...
-
値の取り出し方について教えて...
-
FirefoxでFormのfileでファイル...
-
PHPのファイル操作
-
日本語のファイルが開けない
-
Warning: preg_match_allの他に...
-
TSVファイルをCSV形式に変換したい
おすすめ情報