Bonjour à tous,

J'ai un problème: j'ai un fichier texte qui contient des données nom prénoms comme ceci :
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
....
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
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 :
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
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.

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 :
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);
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
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);	 
	}
Voici le resultat :
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 $donnees = $line[0].'  ICI  '.$line[1].''.$line[2].'
';
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 ...
et ensuite faire un genre de
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
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 ...

J'espère avoir était assez clair ! J'attends vos réponses avec impatience, merci