web-dev-qa-db-ja.com

preg_replaceを使用して最初の一致のみを置換

'aba aaa cba sbd dga gad aaa cbz'に類似した構造の文字列があります。文字列は、外部ソースからのものであるため、毎回少し異なる場合があります。

'aaa'の最初の出現のみを置換し、その他は置換しません。出来ますか?

52
deadbeef

preg_replace のオプションの4番目のパラメーターはlimitです:

preg_replace($search, $replace, $subject, 1);
99
Paulpro

これにはpreg_replacelimit引数を使用し、1に設定して、最大1つの置換が行われるようにすることができます。

$new = preg_replace('/aaa/','replacement',$input,1);
10
codaddict

たとえば、out $ contentは次のとおりです。

START 
FIRST AAA 
SECOND AAA

1)使用する場合:

$content = preg_replace('/START(.*)AAA/', 'REPLACED_STRING', $content);

sTARTから最後のAAAまですべてが変更され、結果は次のようになります。

REPLACED_STRING

2)使用する場合:

$content = preg_replace('/START(.*?)AAA/', 'REPLACED_STRING', $content);

結果は次のようになります。

REPLACED_STRING 
SECOND AAA
0
T.Todua