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


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

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

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

Author: DreadPirateShawn, 2011-07-18

3 answers

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

preg_replace($search, $replace, $subject, 1);
 90
Author: Paulpro, 2012-06-30 02:23:22

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

$new = preg_replace('/aaa/','replacement',$input,1);
 9
Author: codaddict, 2011-07-18 07:19:40

Например, содержимое out $ выглядит следующим образом:

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
 -1
Author: solution fix, 2013-03-27 11:15:39