Заменить только первое совпадение с помощью preg replace [дубликат]


На этот вопрос уже есть ответ здесь:

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

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

3 ответа:

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

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

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

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

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