Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/03/2007, 20h38   #1
Membre à l'essai
 
Homme Cédric D.
Développeur Web
Inscription : mai 2004
Messages : 68
Détails du profil
Informations personnelles :
Nom : Homme Cédric D.
Âge : 28
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2004
Messages : 68
Points : 24
Points : 24
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 !
Phenol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2007, 20h55   #2
Invité de passage
 
Inscription : mars 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 6
Points : 3
Points : 3
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 ?
nohik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2007, 21h08   #3
Membre à l'essai
 
Homme Cédric D.
Développeur Web
Inscription : mai 2004
Messages : 68
Détails du profil
Informations personnelles :
Nom : Homme Cédric D.
Âge : 28
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2004
Messages : 68
Points : 24
Points : 24
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 !
Phenol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2007, 22h04   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Code :
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 :
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.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h59.


 
 
 
 
Partenaires

Hébergement Web