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

Translate

J'essaie de saisir les majuscules de quelques mots et de les envelopper dans des balises span. j'utilisepreg_replaceà des fins d'extrait et d'emballage, mais il ne produit rien.

preg_replace("/[A-Z]/", "<span class=\"initial\">$1</span>", $str)
This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

Vous devez mettre le motif entre parenthèses/([A-Z])/, comme ça:

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

\0correspondra également à toute l'expression correspondante sans effectuer de capture explicite en utilisant des parenthèses.

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

Comme toujours, vous pouvez aller àphp.net/preg_replaceou 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 au motif entier.

La source
Translate

Dudocumentation preg_replacesur php.net:

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

Voir l'exemple de Flubba.

La source
Translate

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

La source