Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/01/2005, 21h39   #1
Membre confirmé
 
Avatar de AlphaYoDa
 
Inscription : novembre 2004
Messages : 213
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 213
Points : 207
Points : 207
Par défaut "0102030405" --> "01.02.03.04.05"

Bonjour, j'aimerai trouver un regex qui me permette de transformer "0102030405" en "01.02.03.04.05" (pour les numéros de téléphones francais, rajouter des séparations).

Je pensais à un regex avec 5 parties qui seront reconcatenées entre des "."

Est-ce qu'il y a une façon plus simple d'obtenir le meme résultat ?

- il faut savoir que certains numéro de téléphone sont déjà PRETS, il ne faut donc plus les toucher.

MERCI de ne pas poster le REGEX... j'aimerai trouver par moi même ..
(je sais ça fait un peu con sur un forum d'entraide..)
AlphaYoDa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2005, 21h47   #2
Membre actif
 
Avatar de doof
 
Inscription : août 2003
Messages : 159
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 159
Points : 153
Points : 153
Salut,
J'allais poster le regex quand j'ai vu ton edit, allez en francais, ca donnerais : "remplacer toute serie de 2 chiffres qui n'est pas suivit d'un point ou d'un caractere de fin de chaine par ces 2 chiffres suivit d'un point"
doof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2005, 22h25   #3
Membre confirmé
 
Avatar de AlphaYoDa
 
Inscription : novembre 2004
Messages : 213
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 213
Points : 207
Points : 207
Merci doof !
j'obtiens :

Code :
	$telephone = ereg_replace("([0-9]{2})[^\.]","\\1.",$telephone);
mais "0689708276" donne "06.97.82.6"

*help houston*
AlphaYoDa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2005, 22h30   #4
Membre actif
 
Avatar de doof
 
Inscription : août 2003
Messages : 159
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 159
Points : 153
Points : 153
C'est a cause de [^\.], il consomme un caractere a chaque fois, il faut donc que tu arrives a reformuler "qui n'est pas suivit d'un point ou d'un caractere de fin de chaine" d'une autre facon !
Une piste : tu n'y arrivera pas avec ereg_replace, utilise preg_replace plutot (cherche au rayon sous_masques negatif)
doof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2005, 22h34   #5
Membre confirmé
 
Avatar de AlphaYoDa
 
Inscription : novembre 2004
Messages : 213
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 213
Points : 207
Points : 207
C'est gentil ! Je me crois dans un jeu de piste.


les expressions "perl" on lair assez différentes.. .(
AlphaYoDa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2005, 23h20   #6
Membre confirmé
 
Avatar de AlphaYoDa
 
Inscription : novembre 2004
Messages : 213
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 213
Points : 207
Points : 207
Code :
	$telephone = preg_replace("(\d{2})","$1",$telephone);
qu'est-ce qui est faux, si je cherche à détecter chaque nombre de 2 chiffres et à le remplacer par soi-même (stupide).. ?
AlphaYoDa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2005, 23h29   #7
Membre actif
 
Avatar de doof
 
Inscription : août 2003
Messages : 159
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 159
Points : 153
Points : 153
il manque les delimiteurs de motif utiles pour preg_replace
j'ai utilisé ici le /, mais j'aurais pu mettre ceux que je veux, l'essentiel étant que le motif commence et finisse par ce meme caractere.

[edit]Ta question m'aurat appris un truc : on peut utiliser les parentheses pour delimiter son motif, et je sens que je vais adopter a l'avenir cette méthode : pas de risque de conflit avec d'autres caracteres du motif.

la seule chose a savoir, c'est qu'elles contiennent du coup tout le motif, le resultat est donc dans $0, si tu remplace $1 par $0, ca devrait marcher.
doof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2005, 00h31   #8
Membre confirmé
 
Avatar de AlphaYoDa
 
Inscription : novembre 2004
Messages : 213
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 213
Points : 207
Points : 207
Code :
	$telephone = preg_replace("/(\d{2}) *(?!\.|\z|[ \D])/","$1.",$telephone);
3 heures après ... mais j'ai appris quelques trucs comme ça

ça marche bien, merci beaucoup doof !

(ça permet d'éviter aussi le point entre le nombre et "ou" dans :

Citation:
06.30.10.63.44 ou 04.91.02.45.96
AlphaYoDa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h29.


 
 
 
 
Partenaires

Hébergement Web