PHP et csv
Résolu
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
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
26 réponses
-
ContributeurMais de rien.
Bonne journée -
Bonjour,
Merci beaucoup vlmath. ça marche nickel. encore merci et bonne journée -
ContributeurBon, j'ai modifié un peu la Regex ...
$patt = "@(.+)\\s+([^ ]+)@i";
Tout caractère / espace / tout sauf espace -
et y a t'il une solution pour que le regex prenne en considération ce facteur ?
Ton code marche mais pour l'optimiser il faudrait qu'il prenne en compte tout le nom sachant que le dernier correspond toujours au prénom comme donné en exemple -
ContributeurOui, c'était fait exprès.
Il prend 3 zones : non_espace / espace / non_espace
Pour ton exemple, comment je peux savoir qu'il faut couper au premier ou deuxième espace ? -
juste une petite question comment faire si le NOM est du genre:
Colombo Barbus Jean
parce que ton regex divise le NOM en deux (nom et prenom mais si j'ai plusieurs espace parce comme indiqué c'est l'espace il ne prend pas en compte une partie du nom comme dans l'exemple que je viens de donner)
voici le résultat que j''obtiens dans ce cas :
Array ( [0] => Array ( [0] => Colombo Barbus ) [1] => Array ( [0] => Colombo ) [2] => Array ( [0] => Barbus ) )
Le prénom Jean n'est pas pris en compte !! -
ContributeurBon, ben dans ce cas là, tu peux utiliser :
$patt = "@([^ ]+)\\s+([^ ]+)@i";
(pas testé, mais ça devrait aller). -
MERCI D'AVANCE POUR TON AIDE
-
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 -
Contributeurben 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 .... -
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 -
ContributeurPour être clair, quel est la structure exacte des couples nom-prénom ? Est-ce qu'elle est uniforme pour tout le fichier ?
-
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 -
Si tu as les nom de la forme NOM et les prenom de la forme Prenom tu peut utiliser cette regex : https://www.developpez.net/forums/d371731/php/php-base-donnees/sql-separer-nom-prenom-places-cellule-unique/#post2276309
-
ContributeurLe 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.
https://www.php.net/manual/fr/language.types.array.php pour plus de détails. -
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 ? -
Contributeurt'as utilisé ma regex ?
petite correction ...$patt = "@([a-z]+)\\s+([a-z ]+)@i";
Je l'avais un peu fait à l'arrache ... -
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 ) ) -
Contributeur
<?php $src = file_get_import( ); $patt = "@([^ ])+\\s+([^ ]+)@Ui"; preg_match_all( $patt, $src, $output ); print_r( $output ); ?>
Code non testé et fait à l'arrache. -
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
- 1
- 2
Suivant