Bonjour à tous,
J'ai un problème: j'ai un fichier texte qui contient des données nom prénoms comme ceci :
Ces données ont besoin d'être traité par un logiciel spécialement conçu pour cela, mais pour pouvoir les traiter, il faut que je donne à ce logiciel le début de l'emplacement du nom et sa taille, pareil pour le prénom, donc dans le cas présent je mettrai
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 DUPONT JEAN LAPINCE MONIQUE DUPUIS MARIE HELENE DUBOIS NICOLAS DELAVILLE JEAN FRANCOIS DU MARC ....
prénom : 0 9 (0 pour le début, 9 car c'est la taille du nom le plus long)
nom : 11 13 (11 début du prénom le plus loin, 13 taille du plus grand)
Problème: cela ne fonctionnera pas car forcement tout les noms ne font pas la même taille, ici avec 9 sa serait bon pour DELAVILLE mais pour DUBOIS par exemple ça donnera DUBOIS NI et le prénom COLAS, il me faut une structure ou les prénoms serait alignés à la verticale comme ceci :
Ainsi je pourrait dire à mon logiciel qu'il prenne les données de 0 à 15 (par exemple) pour les mettre dans nom et qu'il prenne les données de 16 à 30 pour les mettre dans prénom.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 DUPONT JEAN LAPINCE MONIQUE DUPUIS MARIE HELENE DUBOIS NICOLAS DELAVILLE JEAN FRANCOIS DU MARC
Voila donc j'ai commencé un script en PHP qui me permet de lire mon fichier d'entrée et de récupérer les données séparé par un espace dans un tableau, ainsi je sépare les noms des prénoms :
Ensuite ces données récupérées je les écrits dans un autre fichier :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 /* Lecture et recupération des données dans le fichier non structuré */ $fichier_entree = fopen($fichier, "r" ); $lines = array(); while($lines[] = fscanf($fichier_entree, "%s\t%s\t%s\n" )); // on récupère les données séparé par un espace dans un tableau fclose($fichier_entree);
Voici le resultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 /* écriture des données dans le fichier à structuré */ foreach($lines as $line) { $nom_fichier = "nom_prenom.txt"; $fichier_sortie=fopen($nom_fichier, "a"); $donnees = $line[0].' '.$line[1].' '.$line[2].' '; fwrite($fichier_sortie, $donnees); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 DUPONT JEAN LAPINCE MONIQUE DUPUIS MARIE HELENE DUBOIS NICOLAS DELAVILLE JEAN FRANCOIS DU MARCIN
Donc $line[0] contient les noms, $line[1] les prénoms et $line[2] quand il y a deux prénoms.
Donc mon écart est fixe et ne sert donc à rien, je pense qu'il faudrait que je concatène une variable entre l'affichage des noms et prénoms
Cette variable devrait pouvoir calculer la longueur du nom pour positionner le prénom en conséquence, j'ai pensé à strlen() mais sur un tableau ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $donnees = $line[0].' ICI '.$line[1].''.$line[2].' ';
et ensuite faire un genre de
Mais je ne sais pas si c'est possible ? ou s'il y a une meilleure solution ? comme forcer l'écriture dans le fichier à un emplacement précis ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if(strlen(nom) = 6) $espace=' ' else if(strlen(nom) = 10) $espace=' ' etc... ce qui donnerait : DUPONT JEAN DUPONTOITS JEAN
J'espère avoir était assez clair ! J'attends vos réponses avec impatience, merci
Partager