実現したいこと
表題のとおり、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:」以降の数値を変換できていません。

回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2023/05/31 02:32