文字列があると仮定します
$str="0000,1023, 1024,1025, 1024,1023,1027,1025 , 1024,1025,0000 " ;
1024 が 3 つあるので、次のように 3 つ目を JJJJ に置き換えたい:
出力:
0000,1023, 1024 ,1025, 1024 ,1023,1027,1025, JJJJ ,1025,0000
str_replaceの作り方
助けてくれてありがとう
あなたの質問が尋ねるように、これを行うために使用したいと考えてstr_replace
います。これはおそらく最良のオプションではありませんが、その関数を使用して行うことは次のとおりです。文字列全体に「JJJJ」のインスタンスが他にないと仮定すると、次のようにすることができます。
$str = "0000,1023,1024,1025,1024,1023,1027,1025,1024,1025,0000";
$str = str_replace('1024','JJJJ',$str,3)
$str = str_replace('JJJJ','1024',$str,2);
strpos() を 3 回使用して、文字列内の 3 番目の 1024 の位置を取得してから置換するか、3 番目の 1024 に一致する preg_replace() で使用する正規表現を作成できます。
次のようにします。
$newstring = substr_replace($str,'JJJJ', strrpos($str, '1024'), strlen('1024') );
実際のデモを見る
文字列の最後の出現を見つけたい場合は、使用できますstrrpos
これは、同じ関数への呼び出しが少なくexplode
、配列を繰り返し処理する必要がないソリューションimplode
です。
// replace the first three occurrences
$replaced = str_replace('1024', 'JJJJ', $str, 3);
// now replace the firs two, which you wanted to keep
$final = str_replace('JJJJ', '1024', $replaced, 2);