IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

"0102030405" --> "01.02.03.04.05" [Fait] [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de AlphaYoDa
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 213
    Points : 210
    Points
    210
    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..)

  2. #2
    Membre actif
    Avatar de doof
    Inscrit en
    Août 2003
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 160
    Points : 294
    Points
    294
    Par défaut
    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"

  3. #3
    Membre actif Avatar de AlphaYoDa
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 213
    Points : 210
    Points
    210
    Par défaut
    Merci doof !
    j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$telephone = ereg_replace("([0-9]{2})[^\.]","\\1.",$telephone);
    mais "0689708276" donne "06.97.82.6"

    *help houston*

  4. #4
    Membre actif
    Avatar de doof
    Inscrit en
    Août 2003
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 160
    Points : 294
    Points
    294
    Par défaut
    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)

  5. #5
    Membre actif Avatar de AlphaYoDa
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 213
    Points : 210
    Points
    210
    Par défaut
    C'est gentil ! Je me crois dans un jeu de piste.


    les expressions "perl" on lair assez différentes.. .(

  6. #6
    Membre actif Avatar de AlphaYoDa
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 213
    Points : 210
    Points
    210
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$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).. ?

  7. #7
    Membre actif
    Avatar de doof
    Inscrit en
    Août 2003
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 160
    Points : 294
    Points
    294
    Par défaut
    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.

  8. #8
    Membre actif Avatar de AlphaYoDa
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 213
    Points : 210
    Points
    210
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$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 :

    06.30.10.63.44 ou 04.91.02.45.96

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quote dans une requete...
    Par Isildur dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/06/2006, 10h57
  2. Problème de quote
    Par kennini dans le forum ASP
    Réponses: 4
    Dernier message: 20/11/2003, 09h40
  3. VARCHAR contenant une quote '
    Par tonyskn dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/05/2003, 19h21
  4. Quotes dans TFilenameEdit (RXLib)
    Par AnnSo dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/01/2003, 20h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo