Comment puis-je obtenir les matchs lors de l'utilisation de preg_replace en PHP?

J'essaye d'attraper les lettres majuscules d'un couple de mots et de les emballer dans des étiquettes d'envergure. J'utilise preg_replace à des fins d'extraction et d'encapsulation, mais il ne génère aucun résultat .

preg_replace("/[A-Z]/", "$1", $str)
0

4 Réponses

Dans la documentation de preg_replace sur php.net:

replacement peut contenir des références de   la forme \ n ou (depuis PHP 4.0.4) $ n,   avec la dernière forme étant le   celui préféré. Chaque référence   sera remplacé par le texte capturé   par le nième motif parenthèse.

Voir l'exemple de Flubba.

0
ajouté

Vous devez placer le motif entre parenthèses / ([A-Z]) / , comme ceci:

preg_replace("/([A-Z])/", "$1", $str)
0
ajouté
@Gumbo: Répondre à vos propres questions est parfaitement bien, même encouragé, tant que la question n'est pas une copie d'un autre sur le site.
ajouté l'auteur Bill the Lizard, source

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

0
ajouté

\0 will also match the entire matched expression without doing an explicit capture using parenthesis.

preg_replace("/[A-Z]/", "\\0", $str)

As always, you can go to php.net/preg_replace or php.net/ to search the documentation quickly. Quoth the documentation:

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

0
ajouté