Заменить только первое совпадение, используя preg_replace

У меня есть строка со структурой, похожей на: 'aba aaa cba sbd dga gad aaa cbz' . Строка может быть немного различной каждый раз, поскольку она принадлежит внешнему источнику.

Я хотел бы заменить только первое появление 'aaa' но не других. Является ли это возможным?

Дополнительным четвертым параметром preg_replace является limit :

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

Вы можете использовать для этого preg_replace и установить его в 1 чтобы preg_replace не более одной замены:

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

например, вне $ 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