IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

écriture/structure fichier TXT


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 50
    Points : 71
    Points
    71
    Par défaut écriture/structure fichier TXT
    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

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 266
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 266
    Points : 8 564
    Points
    8 564
    Billets dans le blog
    17
    Par défaut
    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
    Ton logiciel ne gèrerait pas le XML par hasard ?

    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 :
    Comment ça se passe pour les noms/prénoms composés ?

    Tu peux utiliser sprintf( ) pour formater ta sortie, exemple :

    $line = sprintf('%30s%30s', $nom, $prenom) . "\r\n" ;

    $nom et $prenom seront écrits dans une "case" de 30 caractères complétée avec des espaces.

    http://fr2.php.net/sprintf

Discussions similaires

  1. écriture dans fichier txt
    Par rezguiinfo dans le forum C#
    Réponses: 1
    Dernier message: 20/03/2011, 09h21
  2. Réponses: 2
    Dernier message: 07/05/2007, 09h06
  3. Réponses: 3
    Dernier message: 01/04/2007, 14h08
  4. reconstituer mon fichier Txt (écriture txt)
    Par af_airone dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 20/10/2005, 16h13
  5. [C#] écriture fichier .txt + calcul écart-type
    Par titaB dans le forum Windows Forms
    Réponses: 6
    Dernier message: 26/05/2005, 14h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo