Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
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 16/04/2008, 18h20   #1
Invité de passage
 
Inscription : avril 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 4
Points : 2
Points : 2
Par défaut Expression Régulière séparation de mots majuscule

Bonjour,

c'est mon premier message sur ce forum, donc j'espere que je ne fais pas d'erreur.

Voila ma problématique
j'ai une base de donnée mysql et j'y importe un fichier csv d'une autre application, dans le fichier csv, il y a un champ Nom&Prénom d'un usager, et les données sont de ce type : "DUPONT Marcel" "MARTIN DUPUIS Roberte" "RICHARD-POULPE Hector", etc....

je voudrais faire une petite boucle de traitement sql, et redispatcher dans ma base mysql (qui fait la distinction NOM et PRENOM comme deux champs distincts)
Seulement, je débute vraiment en expression reguliere.

J'imagine qu'il suffit de faire un preg_match, mais je serais tres reconnaissant si quelqu'un pouvait m'aider à elaborer la petite routine qui me faciliterait la vie...

***EDIT:
en gros j'aimerais à l'intérieur de ma boucle pouvoir récuperer deux variable, l'une contenant le nom en majuscule "DUPONT" ou "MARTIN DUPUIS", et l'autre variable contenant le reste du champ (le prenom)

l'export de l'autre application est toujours identique, le nom est toujours en majuscule, et peut etre séparé par des espaces, ou quelquefois un tiret
***

Merci d'avance

Damien.
orfaon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 20h31   #2
Candidat au titre de Membre du Club
 
Inscription : avril 2008
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 18
Points : 10
Points : 10
Hello !

Bienvenue ^^
Une question avant de te pondre une expression régulière de 3 km :p
Est ce que dans ton fichier il y a une délimitation entre 2 nom consécutif ou non ? (du genre un ; ou un saut de ligne ? )

Merci de ta réponse
greg0037 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 20h38   #3
Rédacteur
 
Avatar de RideKick
 
Homme
Directeur technique
Inscription : septembre 2006
Messages : 5 959
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Directeur technique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : septembre 2006
Messages : 5 959
Points : 10 889
Points : 10 889
et si tu coupais ta chaine en deux en prenant comme délimiteur l'espace ?
__________________
Pas de questions techniques en MP please

Mon site perso
RideKick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 20h42   #4
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
Citation:
Envoyé par RideKick Voir le message
et si tu coupais ta chaine en deux en prenant comme délimiteur l'espace ?
Marchera pas pour

"MARTIN DUPUIS Roberte"

L'expression régulière est très simple a mon avis.
Celle-ci doit fonctionner
Code :
1
2
 
/^([A-Z\- ]*)([a-z\- ]*)$/
Edit :
Après il y aura tous les caractères accentués.
Du coup, je la changerai bien en
__________________
Pierre
1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
3. Un code rapide c'est bien, un code maintenable c'est mieux
...

Why was the font tag an orphan ? Because it didn't have a font-family.
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 22h56   #5
Invité de passage
 
Inscription : avril 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 4
Points : 2
Points : 2
Merci merci !

Pour greg0037
oui il y a des délimitations, c'est un fichier csv bien fait, mais dans lequel il n'y a qu'un champ pour le nom et prenom.

pour RideKick
effectivement, comme le dis FCYPBA, il y a des noms composés, j'avais meme pensé à faire une boucle en découpant avec les espaces et en testant chaque morceau pour voir s'il n'y avait que des majuscules...

mais bon MERCI BEAUCOUP FCYPBA, je ne suis pas au travail actuellement, mais d'apres ce que je vois, c'est l'expression qu'il me fallait

il me reste juste à l'implementer dans ma boucle de traitement des lignes du csv.

merci encore pour vos réponses

a bientot
orfaon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2010, 14h49   #6
Invité de passage
 
Développeur Web
Inscription : octobre 2007
Messages : 4
Détails du profil
Informations personnelles :
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2007
Messages : 4
Points : 4
Points : 4
Voilà ce que j'ai trouvé qui fonctionne très bien
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
$noms=explode(' ',$nom);
unset($nom);
unset($prenom);
	foreach ($noms as $lenom){	
		if (preg_match("/^([A-Z\-]*)$/",$lenom)){
	$nom.=$lenom." ";
}
 
	else {
	$prenom .= $lenom." ";
}
	}
logosten est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h44.


 
 
 
 
Partenaires

Hébergement Web