55 votes

Comment puis-je accéder aux matchs lorsque j'utilise preg_replace en PHP?

J'essaie de saisir les majuscules de quelques mots et de les envelopper dans des balises span. J'utilise preg_replace à des fins d'extraction et d'emballage, mais cela ne produit rien.

 preg_replace("/[A-Z]/", "<span class=\"initial\">$1</span>", $str)
 

55voto

Polsonby Points 11824

Vous devez mettre la correspondance entre parenthèses, comme ceci:

 preg_replace("/([A-Z])/", "<span class=\"initial\">$1</span>", $str)
 

30voto

John Douthat Points 28189

\0 correspondra également à l'expression correspondante entière sans effectuer de capture explicite à l'aide de parenthèses.

 preg_replace("/[A-Z]/", "<span class=\"initial\">\\0</span>", $str)
 

Comme toujours, vous pouvez aller sur php.net/preg_replace ou php.net/ < quel que soit le terme de recherche> pour rechercher rapidement la documentation. Quoth la documentation:

\ 0 ou $ 0 fait référence au texte correspondant à l'ensemble du modèle.

8voto

Wedge Points 11910

De la documentation de preg_replace sur php.net:

remplacement peut contenir des références de la forme \ n ou (depuis PHP 4.0.4) $ n, cette dernière forme étant la préférée. Chacune de ces références sera remplacée par le texte capturé par le nième motif entre parenthèses.

Voir l'exemple de Flubba.

5voto

Dinah Points 15711

Utilisez des parenthèses autour de la capture souhaitée.

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