57 votes

Remplacer seulement la première correspondance en utilisant preg_replace

J'ai une chaîne de caractères dont la structure est 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 uniquement la première occurrence de 'aaa' mais pas les autres. Est-ce possible ?

112voto

Paulpro Points 54844

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

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

10voto

codaddict Points 154968

Vous pouvez utiliser le limit argument de preg_replace pour cela et le régler sur 1 de sorte qu'au plus un remplacement se produise :

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

0voto

solution fix Points 450

Par exemple, out $content est :

START 
FIRST AAA 
SECOND AAA

1) si vous utilisez :

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

cela changera tout du START 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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X