質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

1回答

200閲覧

PHPで複数の文字列の中から特定の文字列を置換(変換)する方法

otokichi_

総合スコア25

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2023/05/29 10:31

実現したいこと

表題のとおり、PHPで以下のような文字列を用意します。
特定の部分を変換したいのですが、どのような方法があるでしょうか。

a:20:{i:0;a:4:{s:7:"id01";s:12:"no010";s:9:"date";s:8:"20120721";s:9:"name";s:6:"ソング";s:4:"code";s:169:"track:01_music:1_min:1500_dist:2_news:1_class:1_copy:1_ninki:5_giant:1_cd:01144_icd:00379_ocd:061800_song:1995103211_gmc:1985109002_human:2010102688_label:4__0:0:9";} i:1;a:4:{s:7:"id02";s:12:"no011";s:9:"date";s:8:"20120721";s:9:"name";s:6:"未ソング";s:4:"code";s:171:"track:01_music:1_min:1500_dist:2_news:3_class:1_copy:3_ninki:5_giant:1_cd:01092_icd:01064_ocd:546800_song:000a010541_gmc:1993109188_human:2010101786_label:2__0:880:2";} i:2;a:4:{s:7:"id03";s:12:"no012";s:9:"date";s:8:"20120721";s:9:"name";s:6:"未ソング";s:4:"code";s:171:"track:01_music:1_min:1500_dist:2_news:3_class:1_copy:3_ninki:4_giant:1_cd:01122_icd:01079_ocd:546800_song:1994109361_gmc:000a0017b0_human:2010102157_label:3__0:190:3";} i:3;a:4:{s:7:"id04";s:12:"no013";s:9:"date";s:8:"20120721";s:9:"name";s:6:"未ソング";s:4:"code";s:173:"track:01_music:1_min:1500_dist:2_news:3_class:1_copy:3_ninki:1_giant:1_cd:01032_icd:00438_ocd:170800_song:2000101426_gmc:000a001a98_human:2010101358_label:3__170:110:1";} i:4;a:4:{s:7:"id05";s:12:"no014";s:9:"date";s:8:"20120721";s:9:"name";s:6:"未ソング";s:4:"code";s:169:"track:01_music:1_min:1500_dist:2_news:3_class:1_copy:3_ninki:5_giant:1_cd:01112_icd:01123_ocd:673030_song:1998106718_gmc:000a0000d3_human:2010103377_label:2__0:0:4";} i:5;a:4:{s:7:"id06";s:12:"no015";s:9:"date";s:8:"20120721";s:9:"name";s:6:"未ソング";s:4:"code";s:169:"track:01_music:1_min:1500_dist:2_news:2_class:1_copy:3_ninki:4_giant:1_cd:00705_icd:00378_ocd:785800_song:1998190004_gmc:000a001c5f_human:2010104654_label:__0:0:99";} i:6;a:4:{s:7:"id07";s:12:"no016";s:9:"date";s:8:"20120721";s:9:"name";s:6:"未ソング";s:4:"code";s:169:"track:01_music:1_min:1500_dist:2_news:2_class:1_copy:3_ninki:4_giant:1_cd:01095_icd:01069_ocd:398002_song:1996106512_gmc:000a000d48_human:2010102050_label:1__0:0:7";} i:7;a:4:{s:7:"id08";s:12:"no017";s:9:"date";s:8:"20120721";s:9:"name";s:6:"未ソング";s:4:"code";s:169:"track:01_music:1_min:1500_dist:2_news:2_class:1_copy:3_ninki:3_giant:1_cd:99999_icd:01131_ocd:161006_song:1995103211_gmc:000a000325_human:2010102686_label:2__0:0:8";} i:8;a:4:{s:7:"id09";s:12:"no018";s:9:"date";s:8:"20120721";s:9:"name";s:6:"未ソング";s:4:"code";s:169:"track:01_music:1_min:1500_dist:2_news:2_class:1_copy:3_ninki:2_giant:1_cd:01091_icd:01048_ocd:716800_song:1994109361_gmc:000a000229_human:2010100140_label:4__0:0:6";} i:9;a:4:{s:7:"id10";s:12:"no019";s:9:"date";s:8:"20120721";s:9:"name";s:6:"未ソング";s:4:"code";s:169:"track:01_music:1_min:1500_dist:2_news:1_class:1_copy:3_ninki:5_giant:1_cd:00722_icd:00387_ocd:318007_song:1997101264_gmc:000a000258_human:2010104671_label:4__0:0:5";}}

前提

PHP version 7.0ですが、問いません。
事前にわかっている情報は 、「id07」、「no016」が含まれているところの「cd:01095」の「01095」を「07111」に変換したいということです。

該当のソースコード

PHP

1$text = "a:20:{i:0;a:4:{s:7:"id01";s:12:"no010";s:9:"date";s:8:"20120721";s:9:"name";s:6:"ソング";s:4:"code";s:169:"track:01_music:1_min:1500_dist:2_news:1_class:1_copy:1_ninki:5_giant:1_cd:01144_icd:00379_ocd:061800_song:1995103211_gmc:1985109002_human:2010102688_label:4__0:0:9";} 2i:1;a:4:{s:7:"id02";s:12:"no011";s:9:"date";s:8:"20120721";s:9:"name";s:6:"未ソング";s:4:"code";s:171:"track:01_music:1_min:1500_dist:2_news:3_class:1_copy:3_ninki:5_giant:1_cd:01092_icd:01064_ocd:546800_song:000a010541_gmc:1993109188_human:2010101786_label:2__0:880:2";} 3i:2;a:4:{s:7:"id03";s:12:"no012";s:9:"date";s:8:"20120721";s:9:"name";s:6:"未ソング";s:4:"code";s:171:"track:01_music:1_min:1500_dist:2_news:3_class:1_copy:3_ninki:4_giant:1_cd:01122_icd:01079_ocd:546800_song:1994109361_gmc:000a0017b0_human:2010102157_label:3__0:190:3";} 4i:3;a:4:{s:7:"id04";s:12:"no013";s:9:"date";s:8:"20120721";s:9:"name";s:6:"未ソング";s:4:"code";s:173:"track:01_music:1_min:1500_dist:2_news:3_class:1_copy:3_ninki:1_giant:1_cd:01032_icd:00438_ocd:170800_song:2000101426_gmc:000a001a98_human:2010101358_label:3__170:110:1";} 5i:4;a:4:{s:7:"id05";s:12:"no014";s:9:"date";s:8:"20120721";s:9:"name";s:6:"未ソング";s:4:"code";s:169:"track:01_music:1_min:1500_dist:2_news:3_class:1_copy:3_ninki:5_giant:1_cd:01112_icd:01123_ocd:673030_song:1998106718_gmc:000a0000d3_human:2010103377_label:2__0:0:4";} 6i:5;a:4:{s:7:"id06";s:12:"no015";s:9:"date";s:8:"20120721";s:9:"name";s:6:"未ソング";s:4:"code";s:169:"track:01_music:1_min:1500_dist:2_news:2_class:1_copy:3_ninki:4_giant:1_cd:00705_icd:00378_ocd:785800_song:1998190004_gmc:000a001c5f_human:2010104654_label:__0:0:99";} 7i:6;a:4:{s:7:"id07";s:12:"no016";s:9:"date";s:8:"20120721";s:9:"name";s:6:"未ソング";s:4:"code";s:169:"track:01_music:1_min:1500_dist:2_news:2_class:1_copy:3_ninki:4_giant:1_cd:01095_icd:01069_ocd:398002_song:1996106512_gmc:000a000d48_human:2010102050_label:1__0:0:7";} 8i:7;a:4:{s:7:"id08";s:12:"no017";s:9:"date";s:8:"20120721";s:9:"name";s:6:"未ソング";s:4:"code";s:169:"track:01_music:1_min:1500_dist:2_news:2_class:1_copy:3_ninki:3_giant:1_cd:99999_icd:01131_ocd:161006_song:1995103211_gmc:000a000325_human:2010102686_label:2__0:0:8";} 9i:8;a:4:{s:7:"id09";s:12:"no018";s:9:"date";s:8:"20120721";s:9:"name";s:6:"未ソング";s:4:"code";s:169:"track:01_music:1_min:1500_dist:2_news:2_class:1_copy:3_ninki:2_giant:1_cd:01091_icd:01048_ocd:716800_song:1994109361_gmc:000a000229_human:2010100140_label:4__0:0:6";} 10i:9;a:4:{s:7:"id10";s:12:"no019";s:9:"date";s:8:"20120721";s:9:"name";s:6:"未ソング";s:4:"code";s:169:"track:01_music:1_min:1500_dist:2_news:1_class:1_copy:3_ninki:5_giant:1_cd:00722_icd:00387_ocd:318007_song:1997101264_gmc:000a000258_human:2010104671_label:4__0:0:5";}}"; 11$search = '_cd:'; 12$replace = '07111'; 13$subject = str_replace($search, $replace, $text); 14echo $subject;

問題となっていること

「id07」、「no016」が含まれているところを特定し、「_cd:」以降の数値を変換できていません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こういうことでしょうか?

PHP

1$pattern="/(id07.*?no016.*?1_cd:)(\d+)/"; 2print preg_replace($pattern,'${1}07111',$text);

投稿2023/05/30 08:16

yambejp

総合スコア114572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otokichi_

2023/05/31 02:32

さっそくのご回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問