PHP et csv [Résolu/Fermé]

Signaler
Messages postés
159
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
1 juillet 2011
-
vlmath
Messages postés
801
Date d'inscription
vendredi 20 octobre 2006
Statut
Contributeur
Dernière intervention
4 septembre 2011
-
Bonsoir,

j'ai besoin de votre aide pour résoudre un problème qui me prend la tête grave.
J'explique, j'ai un fichier excel contenant des informations provenant de ma base de
données. le Hic est que j'ai les noms et prénoms dans une même colonne et je souhaiterai
les séparés mais je sais pas comment faire dans la mesure ou si je sépare avec excel
je fausse tout puisque les nom set prénom n'ont pas les mêmes longueurs et avec PHP
j'ai auncune idée

HELP ME PLEASE LES AMIS

Messages postés
801
Date d'inscription
vendredi 20 octobre 2006
Statut
Contributeur
Dernière intervention
4 septembre 2011
150
Salut,

Ce que tu peux faire c'est une séparation sur l'espace se trouvant entre le nom et le prénom.
Tu peux le faire avec l'utilisation de Regex sous PHP, genre :
([^ ]+)\s*[^ ]+)
qui peut se traduire par :
([^ ]) : tout caractère sauf un espace
\s* : un espace

R'as de très bon manuels sur le web
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 62815 internautes nous ont dit merci ce mois-ci

Messages postés
159
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
1 juillet 2011

imaginons que j'ai un champ nom : ALEXANDRE LE ROI et un champ nom JEAN MICHEL

comment ça va se passer dans ce cas ?
Messages postés
801
Date d'inscription
vendredi 20 octobre 2006
Statut
Contributeur
Dernière intervention
4 septembre 2011
150
Le problème est le suivant :

Tu peux avoir des prénoms multiples OU des nom multiples.
Dans les deux cas, le prog ne peut pas savoir comment découper, et donc tu devras le faire à la main.

Ce que tu peux faire, c'est dire que si t'as plusieurs espaces, il ne les faits pas et te demande de le faire à la main.

Faisable avec PHP
Messages postés
159
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
1 juillet 2011

parce que dans ce cas j'ai besoin que php me sépare le nom et le prénom de sorte que :

nom1= LE ROI Prénom1=Alexandre

nom2=Michel Prénom2= LE ROI
help me please
Messages postés
801
Date d'inscription
vendredi 20 octobre 2006
Statut
Contributeur
Dernière intervention
4 septembre 2011
150
Bon déjà que pour une personne dans ton exemple le nom se trouve avant et une fois après, que le nom de l'un est le prénom de l'autre, et que le prénom n'est qu'à moitié par rapport à la donnée, hein ...

Je ne comprends rien à ce que tu veux

Je t'ai donné une idée, tu me dis où ça se pose problème dans la prog de regex en PHP ...

Non ?
tu sais les regex c'est pas ma tasse de thé. je n'y vois que du noir. si tu me donne un exemple avec un bout de code alors je pourrai suivre.

merci d'avance
Messages postés
801
Date d'inscription
vendredi 20 octobre 2006
Statut
Contributeur
Dernière intervention
4 septembre 2011
150
<?php

$src = file_get_import( );

$patt = "@([^ ])+\\s+([^ ]+)@Ui";

preg_match_all( $patt, $src, $output );

print_r( $output );

?>

Code non testé et fait à l'arrache.
Messages postés
159
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
1 juillet 2011

voici le résultat que j'obtiens en testant avec le nom ALEXANDRE LE ROI. je comprend pas :

Array ( [0] => Array ( [0] => ALEXANDRE L [1] => E R ) [1] => Array ( [0] => E [1] => E ) [2] => Array ( [0] => L [1] => R ) )
Messages postés
801
Date d'inscription
vendredi 20 octobre 2006
Statut
Contributeur
Dernière intervention
4 septembre 2011
150
t'as utilisé ma regex ?

petite correction ...
$patt = "@([a-z]+)\\s+([a-z ]+)@i";


Je l'avais un peu fait à l'arrache ...
Messages postés
159
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
1 juillet 2011

ton code est hyper interessant pour moi et je pense qu'il peut résoudre mon problème mais j'ai des questions :

- peux-tu m'expliquer les lignes en détail. dans mon cas nous avons pris le nom sous la forme PRENOM+NOM. comment faire si on avait un NOM+PRENOM ?

- comment récupérer les informations séparer sous forme de variable ?
Messages postés
801
Date d'inscription
vendredi 20 octobre 2006
Statut
Contributeur
Dernière intervention
4 septembre 2011
150
Le problème est qu'il ne peut pas reconnaitre ce qui est un nom ou un prénom : tu dois avoir une structure constante pour pouvoir le faire automatiquement.
Pour le script, il va uniquement voir une suite de caractères, rien de plus.

Pour les variables, tu les as déjà : ici, c'est un tableau ($output). Pour l'accès, tu mets simplement $output[0][1] pour accéder à la variable en 0,1 (t'as les indexes dans le print_r ci-dessus.
http://php.net/manual/fr/language.types.array.php pour plus de détails.
Messages postés
258
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
70
Si tu as les nom de la forme NOM et les prenom de la forme Prenom tu peut utiliser cette regex : http://www.developpez.net/forums/d371731/php/php-sgbd/sql-separer-nom-prenom-places-cellule-unique/#post2276309
Messages postés
159
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
1 juillet 2011

Bonjour les amis,

J'avais un souci avec mon LAPTOP raison pour laquelle j'avais plus donné signe de vie.

La formule de Leviathan49 est intéressante mais ne marche que si les noms sont écris en majuscule alors que dans mon cas les noms sont écris de la manière suivante "Carvalho Jean-Pierre" par exemple

En fait le sépareur c'est l'espace et pour les noms composés j'ai un "-" d'une manière générale
Messages postés
801
Date d'inscription
vendredi 20 octobre 2006
Statut
Contributeur
Dernière intervention
4 septembre 2011
150
Pour être clair, quel est la structure exacte des couples nom-prénom ? Est-ce qu'elle est uniforme pour tout le fichier ?
Messages postés
159
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
1 juillet 2011

Oui la structure est uniforme à 90%, ce qui me est satisfaisant pour moi.

voici des nom extraits de mon fichier:

- Leduc Pierre-Michel

-Gustave-Daniel Michaël

- Henry Maurice
Messages postés
801
Date d'inscription
vendredi 20 octobre 2006
Statut
Contributeur
Dernière intervention
4 septembre 2011
150
ben tu vois déjà entre le premier et le deuxième, t'as une inversion ...
Tu ne pourrais pas enlever les 10% qui ne sont pas comme le reste, et on pourra faire une RegEx pour le reste ....
Messages postés
159
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
1 juillet 2011

Justement c'est pas une inversion. je t'explique ce que je dois faire. les noms et prénoms sont séparés par des espaces comme indiqué ci-dessous dans mon exemple.

Donc si j'ai un nom du genre Leduc Pierre-Michel cela veut dire que LEDUC est le nom et Pierre-Michel le prénom. c'est la même chose pour les autres exemples.
NOM<espace>prénom

toujours le dernier groupe est le prénom et le dernier le nom sachant que pour les noms composés par exemple Gustave-Daniel Michaël, tu as le nom Gustave-Daniel et le prénom Michaël
Messages postés
159
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
1 juillet 2011

MERCI D'AVANCE POUR TON AIDE
Messages postés
801
Date d'inscription
vendredi 20 octobre 2006
Statut
Contributeur
Dernière intervention
4 septembre 2011
150
Bon, ben dans ce cas là, tu peux utiliser :
$patt = "@([^ ]+)\\s+([^ ]+)@i";
(pas testé, mais ça devrait aller).
1 2