[Résolu] Récursivité dans une regex (comment ??)


medium69
WRInaute passionné
WRInaute passionné
 
Messages: 2485
Inscription: 7 Mai 2005

[Résolu] Récursivité dans une regex (comment ??)

Message le Ven Juin 02, 2006 20:00

Je souhaite appliqué un caractère comme séparateur de millierà la place de l'espace conventionnel.



Code: Tout sélectionner
echo '<p>'.preg_replace('/([0-9]{1,3}) ([0-9]{3})/', '$1***$2', 'Le nombre 111 222 333 444 555 666 777 888 999 est très grand'); // séparateur insécable de millier.'</p>';


m'affiche :

Le nombre 111***222 333***444 555***666 777***888 999 est très grand

Je n'arrive pas à trouver comment rendre récursive cette regex pour afficher : (sachant que l'on ne connait pas la taille du nombre en question

Le nombre 111***222***333***444***555***666***777***888***999 est très grand
Dernière édition par medium69 le Sam Juin 03, 2006 21:10, édité 1 fois.


Serious
WRInaute passionné
WRInaute passionné
 
Messages: 2438
Inscription: 21 Nov 2005

Message le Sam Juin 03, 2006 0:29

/(?<=\d)(\d\d\d)(?=(\d\d\d)+\D|\D)/

mumbly
WRInaute discret
WRInaute discret
 
Messages: 70
Inscription: 23 Nov 2005

Message le Sam Juin 03, 2006 9:30

edit-
Dernière édition par mumbly le Sam Juin 03, 2006 21:04, édité 1 fois.

shrom
WRInaute impliqué
WRInaute impliqué
 
Messages: 865
Inscription: 5 Juil 2004

Message le Sam Juin 03, 2006 11:18

Quelque chose comme ça:
Code: Tout sélectionner
preg_replace( '/([0-9]+)\s([0-9]+)/U', '$1***$2', 'Le nombre 111 222 333 444 555 666 777 888 999 est très grand' );


medium69
WRInaute passionné
WRInaute passionné
 
Messages: 2485
Inscription: 7 Mai 2005

Message le Sam Juin 03, 2006 20:42

shrom a écrit:Quelque chose comme ça:
Code: Tout sélectionner
preg_replace( '/([0-9]+)\s([0-9]+)/U', '$1***$2', 'Le nombre 111 222 333 444 555 666 777 888 999 est très grand' );


Merci cela marche au poil ;)


Serious
WRInaute passionné
WRInaute passionné
 
Messages: 2438
Inscription: 21 Nov 2005

Message le Sam Juin 03, 2006 22:07

J'avais mal lu l'ennonce du probleme, tu voulais juste transformer l'espace en virgule. C'est effectivement beaucoup plus simple.

Ma "belle" regexp insere automatiquement les virgules. Et la, le Ungreedy ne suffit plus, il faut un Lookbehind.


medium69
WRInaute passionné
WRInaute passionné
 
Messages: 2485
Inscription: 7 Mai 2005

Message le Dim Juin 04, 2006 0:55

Dans la réalité, je veux transformer l'espace par un espace insécable pour le séparateur de miller. (le nombre n'est pas coupé en fin de ligne)


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités