web-dev-qa-db-fra.com

Remplace uniquement la première correspondance à l'aide de preg_replace

J'ai une chaîne avec une structure similaire à: 'aba aaa cba sbd dga gad aaa cbz'. La chaîne peut être un peu différente à chaque fois car elle provient d'une source externe.

Je voudrais remplacer seulement la première occurrence de 'aaa' mais pas les autres. C'est possible?

51
deadbeef

Le quatrième paramètre facultatif de preg_replace est limit:

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

Vous pouvez utiliser l'argument limit de preg_replace pour cela et le définir sur 1 afin qu'au moins un remplacement survienne

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

par exemple, out $ content est:

START 
FIRST AAA 
SECOND AAA

1) si vous utilisez:

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

cela va tout changer du début au dernier AAA et votre résultat sera:

REPLACED_STRING

2) si vous utilisez:

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

Votre résultat sera comme:

REPLACED_STRING 
SECOND AAA
0
T.Todua