PHPFrance

Discuter de tout ce qui touche au PHP, en français.

Vers le contenu

» Masquer les résultats de la recherche

Recherche dynamique PHPfrance

  1. Effectuez une recherche, les résultats s'afficheront dynamiquement ici.

Lire un fichier texte à colonnes fixes  Sujet résolu

Pour les allergiques au PHP procédural

Lire un fichier texte à colonnes fixes

Messagede mcorgnet le 28 Aoû 2008, 10:49

Bonjour,

J'ai un fichier texte à traiter, qui contient des colonnes fixes (en octets). En gros, quand une colonne fait 30 octets et que la valeur enregistrée dedans fait 8 octets, 22 octets sont remplis avec des espaces.

Donc, j'ai besoin de récupérer certaines colonnes dans ce fichier, et je ne sais absolument pas comment m'y prendre.


Extrait de quelques lignes du fichier :

1                        BAT 1                    HLM                Residence de l AU                                            SAP96240778                                          RDC                            1VILLAGE-NEUF 0      R3  026/07/200715:48:48      629      628        1m3                                                                                                                                                                                            0                 1l                           1                             0   0
1                        BAT 1                    HLM                Residence de l AU                                            SAP96240780                                          RDC                            2VILLAGE-NEUF 0      R3  026/07/200715:49:34      331      330        1m3                                                                                                                                                                                            0                 1l                           1                             0   0


Merci de votre aide.

(oups, je crois que j'ai posté dans le mauvais forum ...)
Ne jamais repousser à demain ce qu'on peut faire après demain ...
mcorgnet
Eléphanteau
 
Messages: 490
Inscription: 06 Oct 2005, 11:25

Publicité

Messagede sadeq le 28 Aoû 2008, 11:37

En utilisant les fonctions : fopen(), fread() et fclose() on peut lire un fichier texte. fread() peut lire dans une ligne du fichier un certain nombre d'octets, il suffit d'en préciser le nombre.

Ainsi, puisque tu connait les tailles des colonnes en octets, tu peux faire des fread() de tant d'octets pour chaque lecture de colonne.

Voici un exemple commenté:
Syntaxe: [ Télécharger ] [ Masquer ]
Code php
<?php

//Format d'une ligne (taille des colonnes fixes en octets)

$taille_col1 = 5; //Colonne 1 de taille 5 octets

$taille_col2 = 20;

$taille_col3 = 10;



//Fichier à format fixe pour l'exemple

$contenu = <<<TEXT

1....BAT 1...............HLM.......

2....BAT 2...............XML.......

TEXT
;

// Imaginez que les points .... sont des espaces



//Ecrire le fichier

file_put_contents("fichierFixe.txt", $contenu);



//Lire le fichier et exploiter les données (colonnes)

$f = fopen("fichierFixe.txt", "r");

while (! feof($f)) //Parcourir le fichier jusqu'à sa fin (feof = End Of File)

{

        //lire les colonnes d'une ligne par taille

        $col1 = fread($f, $taille_col1);

        $col2 = fread($f, $taille_col2);

        $col3 = fread($f, $taille_col3);

        $retour_chariot = fread($f, 1); //La fin d'une ligne est marquée par 1 octet de retour chariot

        //afficher les données

        echo sprintf("<p>Col1= %d, Col2= %s, Col3= %s</p>", trim($col1), trim($col2), trim($col3));

}

fclose($f);

?>
--oo----(O!O)----oo--
Prendre le recul n'est pas une perte de temps.

Affrontez moi dans l'arène
Avatar de l’utilisateur
sadeq
Modérateur PHPfrance
Modérateur PHPfrance
 
Messages: 2077
Inscription: 09 Fév 2005, 18:17
Localisation: Le Mans - France

Messagede mcorgnet le 28 Aoû 2008, 11:46

C'est exactement ce que je cherchais.

Merci beaucoup de ton aide.
Ne jamais repousser à demain ce qu'on peut faire après demain ...
mcorgnet
Eléphanteau
 
Messages: 490
Inscription: 06 Oct 2005, 11:25


Retourner vers PHP orienté Objet

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

  • Publicité