###実現したいこと
preg_replaceが絶妙にできず、正しいコードを知りたいです。
###該当のソースコード
初期値として下記があります
$str = 'aaa_bb_cccc_x';
上記の「最後のハイフン以降」を「$i」へと置換し次のようにしたいです。
$i = 1; $str = 'aaa_bb_cccc_1';
###試したこと
以下の感じで絶妙にあと一歩できません
1つ目 → $iが追加されず!
2つ目 → ハイフンが余計!
3つ目 → ならハイフンを取ればいいいと思ったのにハイフンが不足!
4つ目 → 不足したなら追加すればいいと思ったのにやっぱりハイフンが余計!なんやねん!
という状況です…
php
1$str = 'aaa_bb_cccc_x'; 2 3$i = 1; 4 5$result = preg_replace( '[(_).\z]', "$1" . $i, $str ); 6echo $result.PHP_EOL; // aaa_bb_cccc 7 8$result = preg_replace( '[(_).\z]', "$1_$i", $str ); 9echo $result.PHP_EOL; // aaa_bb_cccc__1 10 11$result = preg_replace( '[(_).\z]', "$1$i", $str ); 12echo $result.PHP_EOL; // aaa_bb_cccc 13 14$result = preg_replace( '[(_).\z]', "$1_{$i}", $str ); 15echo $result.PHP_EOL; // aaa_bb_cccc__1
タグにないですが正規表現以外の方法は考えられてないのでしょうか。
回答2件
あなたの回答
tips
プレビュー