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 :

Comment découper une adresse postale en plusieurs parties


Sujet :

Langage PHP

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut Comment découper une adresse postale en plusieurs parties
    Bonjour,

    J'ai une variable avec comme enregistrement une adresse postale (exemple : mairie, place de la Mairie 76160 Préaux)

    Comment je peux faire pour découper cette variable en plusieurs parties, afin d'avoir une variable $rue, $code_postale et $ville ?

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $adresse = 'mairie, place de la Mairie 76160 Préaux';
    >>>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $rue = 'mairie, place de la Mairie';
    $code_postale = '76160';
    $ville = 'Préaux';
    Je cherche un algo mais c'est le trou noir !

    Merci d'avance pour vos indications !

    Arnaud

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je propose un truc comme ca, y'a des cas ou ca doit merder mais bon.
    Le plus simple ca reste quand meme de faire remplir des champs separés a l'utilisateur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
     
    $adresse = "mairie, place de la Mairie 76160 Préaux";
     
    preg_match("'(?<rue>[[:alnum:] -]*).(?<cp>[0-9]{5}).(?<ville>[[:alnum:] -]*)'" ,$adresse,$out);
    echo 'rue : ' . $out['rue'] . '<br />';
    echo 'code postal : ' . $out['cp'] . '<br />';
    echo 'ville : ' . $out['ville'] . '<br />';
     
    ?>

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    cela n'est pas idio !

    en faite les champs ne sont pas rempli par l'utilisateur, mais repris ds d'un fichier texte.

    les adresse française on tjr un code postale, donc la "rue" est se qui est avant le code postale et la ville ce qui est après le code postale.

    Ca me permettra de bien formater l'écriture des adresse pour imprimer sur des enveloppe

    merci pour ta proposition, je vais la tester.

  4. #4
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    alors après quelque test :

    1. La rue n'est pas bien détecté

    2. le CP fonctionne parfaitement

    3. La ville fonctionne, mais dans le cas de ville ayant un nom composé (exemple : Le grand quevilly), la découpe s'arrête après le 1er mot.

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match("'(?<rue>[[:alnum:] -,]*).(?<cp>[0-9]{5}).(?<ville>[[:alnum:] -]*)'" ,$adresse,$out);
    j'ai jouté la virgule pour la rue.
    par contre la ville fonctionnait déjà avec des espaces.

  6. #6
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    cela fonctionne mieux, mais ds certaine adresse j'ai plusieurs virgules.

    Je devrai peut etre les supprimer pour un traitement plus simple ?

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    ca fonctionne avec plusieurs virgules.
    dis-donc tu pourrais tester avant de demander

  8. #8
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    j'ai tester ! lol

    mais comme tu as vu sur mon autre post j'ai des caractères bizarres qui foutes la merde ! lol

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    essaie comme ca alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match("'(.*)([0-9]{5})(.*)'s" ,$adresse,$out);
    ca decoupe avant et apres le code postal en prenant tout ce qu'il y a, y compris les retours a la ligne.

  10. #10
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    j'ai essayé ce dernier après avoir réussie à avoir un texte source propre (voir mon autre post sur la convention du code HTML en texte brut)

    Malheureusement, ce regex ne retourne rien. pas de rue, pas de cp ni de ville...

    merci pour ton aide sinon, elle m'est bien pratique pour avancer dans mon projet !

  11. #11
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    en faite pour cette solution qui pour moi serai la meilleur vu que la rue est avant le cp et la ville après le cp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match("'(.*)([0-9]{5})(.*)'s" ,$adresse,$out);
    reste a créer les variables nécessaire comme dans les autres exemple.

    Je vais essayé de le faire... et j'envoie la réponse des que j'aurai trouvé !

  12. #12
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    bon, c'est moi qui n'est pas réveillé se soir !

    la solution fonctionne parfaitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /Découpe l'adresse en un champ adresse, cp et ville
    $adresse = "mairie, 5 place de la Mairie, impasse des chameaux 76160 Préaux";
     
    preg_match("'(.*)([0-9]{5})(.*)'s" ,$adresse,$out);
     
    echo 'adresse complète : '.$out[0].'<br>';
    echo 'rue : ' . $out[1] . '<br />';
    echo 'code postal : ' . $out[2] . '<br />';
    echo 'ville : ' . $out[3] . '<br /><br />';
    merci de ton aide sabotage !

  13. #13
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Heu oui c'est moi qui est oublié de remettre les noms de parametre (rue, adresse ...) que j'avais mis au debut.
    Mais effectivement on peut utiliser le numero d'index a la place comme tu as fait.

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

Discussions similaires

  1. [XL-2010] Extraction d'une partie d'une adresse postale
    Par alain.terieur12 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 04/12/2014, 17h14
  2. [AC-2010] Remplacer mot par son abréviation dans plusieurs champs d'une adresse postale
    Par lorenzokamalodo dans le forum Access
    Réponses: 7
    Dernier message: 05/08/2014, 09h05
  3. Réponses: 2
    Dernier message: 24/08/2005, 10h59
  4. Comment découper une chaîne de caractères en VBA
    Par TomPad dans le forum Access
    Réponses: 3
    Dernier message: 23/06/2005, 09h58
  5. Comment récupérer une adresse MAC ?
    Par psau dans le forum Développement
    Réponses: 7
    Dernier message: 19/07/2002, 17h26

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