it-roy-ru.com

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

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

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

51
deadbeef

Необязательный четвертый параметр preg_replace это limit:

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

Для этого вы можете использовать аргумент limitpreg_replace и установить для него 1 так, чтобы произошла не более одной замены:

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

например, $ content:

START 
FIRST AAA 
SECOND AAA

1) если вы используете:

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

это изменит все от СТАРТА до последнего ААА, и Ваш результат будет:

REPLACED_STRING

2) если вы используете:

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

Ваш результат будет таким:

REPLACED_STRING 
SECOND AAA
0
T.Todua