|
PHPFrance est maintenu par des bénévoles et soutenu par les sociétés Actoo et
Anaska, Conseil et Formation pour PHP
Pour optimiser vos chances commencez par consulter la FAQ et faites une recherche.
Bon esprit, politesse et entraide sont les règles de ce forum.
|
| Voir le sujet précédent :: Voir le sujet suivant |
| Auteur |
Message |
mcorgnet Eléphanteau
Inscrit le: 06 Oct 2005 Messages: 490
|
Posté le: 28 Aoû 2008, 10:49 Sujet du message: Lire un fichier texte à colonnes fixes |
|
|
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 :
| Code: | 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 ... |
|
|
 |
sadeq Magohamoth
Inscrit le: 09 Fév 2005 Messages: 1772 Localisation: Le mans - France |
Posté le: 28 Aoû 2008, 11:37 Sujet du message: |
|
|
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é:
| 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);
?>
|
_________________ Prendre le recul n'est pas une perte de temps.
Formez-vous ! |
|
|
 |
mcorgnet Eléphanteau
Inscrit le: 06 Oct 2005 Messages: 490
|
Posté le: 28 Aoû 2008, 11:46 Sujet du message: |
|
|
C'est exactement ce que je cherchais.
Merci beaucoup de ton aide. _________________ Ne jamais repousser à demain ce qu'on peut faire après demain ... |
|
|
 |
|
|
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum
|
Powered by phpBB © phpBB Group - PHPFrance est hébergé par Sivit
|