構造体の文字列は、'aba aaa cba sbd dga gad aaa cbz'
です。文字列は、毎回外部ソースからのものとは少し異なる場合があります。preg_replaceを使用して最初の一致のみを置換します。
'aaa'
の最初のオカレンスだけを置き換えますが、他のものは置き換えません。出来ますか?
構造体の文字列は、'aba aaa cba sbd dga gad aaa cbz'
です。文字列は、毎回外部ソースからのものとは少し異なる場合があります。preg_replaceを使用して最初の一致のみを置換します。
'aaa'
の最初のオカレンスだけを置き換えますが、他のものは置き換えません。出来ますか?
preg_replaceのオプションの四番目のパラメータはlimit
です:
preg_replace($search, $replace, $subject, 1);
あなたはこのためにpreg_replace
のlimit
引数を使用して1
に設定することができますので、最大1つの置換処理が行われます。
$new = preg_replace('/aaa/','replacement',$input,1);
たとえば、$ contentは次のとおりです。
START
FIRST AAA
SECOND AAA
1)あなたが使用している場合:
$content = preg_replace('/START(.*)AAA/', 'REPLACED_STRING', $content);
それは最初から最後AAAにすべてを変えるだろうし、あなたの結果は次のようになります。
REPLACED_STRING
2)あなたが使用している場合:
$content = preg_replace('/START(.*?)AAA/', 'REPLACED_STRING', $content);
結果は次のようになります。
REPLACED_STRING
SECOND AAA
これはどうして起こりますか?関して "?"。 – user111671
私は最後から始まる最初の試合だけを交換する必要がある場合、yor答えをありがとう?コードは何でしょうか? –
@josesanchez文字列が長すぎない場合は、strrevを使用して文字列を反転し、このトリックを使用して検索するパターンの逆を検索し、文字列を再度逆にすることができます。非常に長い場合は、文字列を2回反転するオーバーヘッドを避けるために逆方向にスキャンすることをお勧めします。 – Paulpro