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 :

Reformater une chaîne


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 68
    Points : 56
    Points
    56
    Par défaut Reformater une chaîne
    Bonjour,

    J'ai un fichier TXT à importer, ou le premier "champs" est le nom complet des personnes :

    Exemple :

    DUPONT Marc
    DE LA FONTAINE Jean
    Etc.

    Je voudrais séprarer le nom du prénom, le problème est que je ne peux pas utiliser un list($nom, $prenom) = split(" ", $nom_complet); car le nom de famille peut être composé d'espaces...

    Comment ne considérer QUE le dernier espace par exemple ? Comment couper le nom du prénom dans mon cas ?

    Merci par avance pour votre aide !

  2. #2
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Phenol
    Bonjour,

    J'ai un fichier TXT à importer, ou le premier "champs" est le nom complet des personnes :

    Exemple :

    DUPONT Marc
    DE LA FONTAINE Jean
    Etc.

    Je voudrais séprarer le nom du prénom, le problème est que je ne peux pas utiliser un list($nom, $prenom) = split(" ", $nom_complet); car le nom de famille peut être composé d'espaces...

    Comment ne considérer QUE le dernier espace par exemple ? Comment couper le nom du prénom dans mon cas ?

    Merci par avance pour votre aide !
    Tu peux utiliser les expressions régulières.
    Qui commence par la fin de la chaine et qui s'arrête au premier espace trouvé sera le premier motif. Le second motif sera le reste de la chaine.

    Par contre j'espère que tu n'as pas prénom avec des espaces comme Jean Luc ?

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 68
    Points : 56
    Points
    56
    Par défaut
    Ton idée me plaît bien ! Non pas de "Jean Luc" ! Ouf !

    Tu peux me donner un exemple d'utilisation de ton idée ? Merci !

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $string = 'DE LA FONTAINE Jean';
    if (preg_match('#^(.+)\s(.+?)$#', $string, $matches)) {
       echo "Nom : $m[1] / Prénom : $m[2]";
    }
    Eventuellement utiliser la fonction preg_match_all s'il faut récupérer tous les noms/prénoms en une seule fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $nb = preg_match_all('#(.+)\s([^\s]+)(?:' . PHP_EOL . '|$)#', $string, $matches);
    echo $nb;
    for ($i = 0; $i < $nb; $i++) {
       echo 'Nom : ' . $matches[1][$i] . ' / Prénom : ' . $matches[2][$i] . '<br/>';
    }
    Y a peut être plus simple


    Julp.

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Réponses: 3
    Dernier message: 28/09/2003, 10h46
  3. Inverser une chaîne de caractères
    Par DBBB dans le forum Assembleur
    Réponses: 2
    Dernier message: 30/03/2003, 11h09
  4. Comptage de mots dans une chaîne
    Par kikinou dans le forum Pascal
    Réponses: 10
    Dernier message: 01/01/2003, 02h27
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

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