Comment puis-je obtenir les résultats lors de l'utilisation preg_replace en PHP?

voix
49

Je suis en train de saisir les lettres majuscules d'un couple de mots et de les envelopper dans des balises span. J'utilise preg_replace à des fins d'extraction et d' emballage, mais ce n'est pas quoi que ce soit sortie.

preg_replace(/[A-Z]/, <span class=\initial\>$1</span>, $str)
Créé 05/08/2008 à 01:35
source utilisateur
Dans d'autres langues...                            


4 réponses

voix
50

Vous avez besoin de mettre le modèle entre parenthèses /([A-Z])/, comme ceci:

preg_replace("/([A-Z])/", "<span class=\"initial\">$1</span>", $str)
Créé 05/08/2008 à 01:36
source utilisateur

voix
26

\0 correspondra également l'expression entière correspondance sans faire une capture explicite à l'aide entre parenthèses.

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

Comme toujours, vous pouvez aller à php.net/preg_replace ou terme de recherche php.net/<whatever> pour rechercher la documentation rapidement. Quoth la documentation:

\ 0 ou 0 $ se réfère au texte correspondant par le motif entier.

Créé 28/08/2008 à 10:02
source utilisateur

voix
8

De la documentation 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 celle préférée. Ces références seront remplacé par le texte capturé par le motif parenthésée n'th.

Voir l'exemple de Flubba.

Créé 05/08/2008 à 02:39
source utilisateur

voix
6

Utilisez les parenthèses autour de votre capture désirée.

Créé 23/06/2009 à 18:54
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more