|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Inscription : novembre 2004 Messages : 213 ![]() |
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..) |
|
|
00
|
|
|
#2 |
|
Membre actif
![]() Inscription : août 2003 Messages : 159 ![]() |
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" |
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Inscription : novembre 2004 Messages : 213 ![]() |
Merci doof !
j'obtiens : Code :
$telephone = ereg_replace("([0-9]{2})[^\.]","\\1.",$telephone); *help houston* |
|
|
00
|
|
|
#4 |
|
Membre actif
![]() Inscription : août 2003 Messages : 159 ![]() |
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) |
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() Inscription : novembre 2004 Messages : 213 ![]() |
C'est gentil ! Je me crois dans un jeu de piste.
les expressions "perl" on lair assez différentes.. .( |
|
|
00
|
|
|
#6 |
|
Membre confirmé
![]() Inscription : novembre 2004 Messages : 213 ![]() |
Code :
$telephone = preg_replace("(\d{2})","$1",$telephone); |
|
|
00
|
|
|
#7 |
|
Membre actif
![]() Inscription : août 2003 Messages : 159 ![]() |
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. |
|
|
00
|
|
|
#8 | |
|
Membre confirmé
![]() Inscription : novembre 2004 Messages : 213 ![]() |
Code :
$telephone = preg_replace("/(\d{2}) *(?!\.|\z|[ \D])/","$1.",$telephone); ça marche bien, merci beaucoup doof ! (ça permet d'éviter aussi le point entre le nombre et "ou" dans : Citation:
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com