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 :

Regex pour séparer les éléments d'une adresse [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut Regex pour séparer les éléments d'une adresse
    Bonjour,

    J'ai un petit souci concernant la séparation d'une adresse qui se trouve sous cette forme : Adresse CodePostal Ville

    J'aimerai séparer tous ça pour avoir :
    Adresse
    CodePostal
    Ville

    J'ai donc fait un joli petit regex qui fonctionne parfaitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match("/^(.*)(\d{5})(.*)$/", $Adresse, $elems);
    Le problème concerne le fait que pour certains pays, le code postal est sous 4 digit.

    J'ai donc essayé cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match("/^(.*)(\d{4,5})(.*)$/", $Adresse, $elems);
    Mais cela me coupe mon code postal si il a 5 chiffres. Ex:
    Adresse X
    XxXx
    Ville

    J'aimerai donc trouver une solution pour qu'il me sépare mon adresse avec un code postal à 4 ou 5 chiffres...

    Si quelqu'un a une petite idée, je prend.

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 308
    Points : 15 638
    Points
    15 638
    Par défaut
    vous pouvez ajouter des espaces autour du groupe de chiffres :
    https://regex101.com/r/FOLuPt/1

  3. #3
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Hello,

    ba merci, tout simplement des espaces

    Je garde l'adresse du site, il me sera fort bien utile.

    Merci.

    EDIT: Ah, je viens de me rendre compte d'une chose important, mon regex ne fonctionne uniquement si le code poste est écrit sans espace, or, il se peut que certain client l'écrive avec un espace (ex: 75 003) dans ce cas le regex ne fonctionne plus...

    Une idée pour ça ?

    RE-EDIT: Je pense avoir trouvé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^(.*) (\d{4,5}|\d{2} \d{3}) (.*)$
    L'espace ne concernant que les codes postaux français, ça devrait le faire

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ce que tu fais est du "bricolage"...
    On ne maitrise jamais ce qui peut être écrit par un tiers.


    Comme il est d'usage sur la plupart des sites :
    • On utilise 3 champs (<input> ou <select>) distincts.

  5. #5
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Salut jreaux62,

    Alors, je comprend ta remarque, et c'est comme ça que je procède habituellement.
    Seulement là, je dois suivre scrupuleusement un cahier des charges, et l'adresse doit être saisi depuis un seul champs (saisi et BDD).

    Mais ce n'est pas un souci, car les valeurs saisi par l'utilisateur sont validées ensuite manuellement, donc "normalement", les données vont être vérifiées et corrigées si erronées.

    Le regex me sert uniquement pour la mise ne forme, donc même si y'a des erreurs qui se glissent, c'est uniquement du côté opérateur que cela se verra, donc pas grave

  6. #6
    Invité
    Invité(e)
    Par défaut
    Alors, utilise aussi ta regex pour ajouter un pattern à l'<input>.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input pattern="....."   />

    Elle peut aussi être vérifiée en JavaScript.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 17/09/2013, 11h59
  2. [RegEx] Regex pour récuperer les paramètres d'une fonction
    Par -Neo- dans le forum Langage
    Réponses: 4
    Dernier message: 16/12/2010, 17h25
  3. Utiliser un controle utilisateur pour afficher les éléments d'une liste
    Par MiniCesc dans le forum Windows Presentation Foundation
    Réponses: 12
    Dernier message: 05/10/2010, 15h13
  4. RegEx pour extraire les liens d'une page html
    Par herch dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 13/05/2009, 17h26
  5. Réponses: 12
    Dernier message: 04/03/2007, 11h43

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