Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/09/2011, 19h47   #1
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Par défaut Lire un fichier txt contenant des sauts de ligne

Bonsoir,

Je dois lire un fichier txt avec tabulation que l'on vient de me fournir.

Jusque là pas de problème. Je fais
Code :
1
2
3
4
5
6
$file = fopen($fileinput,"r"); 
 
        while (!feof($file)) {
          $ligne = fgets($file, 4096); 
          ... traitement de ma ligne....
        }
Mais j'ai un gros problème.

Le fichier txt que l'on m'a fourni contient dans certaine colonne un texte qui lui même contient des sauts de ligne.

Résultat dans certains cas une ligne se retrouve sur 2 voir plus de ligne.

Est-il possible de palier à ce genre de problème ou dois-je redemander le fichier d'origine qui est une extraction d'une base Access ?

Merci d'avance
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 19h56   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
c'est un CSV utilise fgetcsv, ou SplFileObject
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 20h15   #3
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Merci, mais ce n'est pas un CSV
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 20h20   #4
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
SplFileObject prend ligne par ligne et coupe les textes en fonction des sauts de lignes qui sont inclus
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 20h23   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par lodan Voir le message
Merci, mais ce n'est pas un CSV
fichier tabulé = CSV
donc met l'option pour SplFileObject ou fgetcsv
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/09/2011, 23h10   #6
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 807
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 807
Points : 1 522
Points : 1 522
Ou pour éclaircir les propos de Stealth35, c'est un format CSV (et ce quelque soit l'extension que tu peux donner au fichier, on s'en fiche - c'est la structure des données qui compte).

http://en.wikipedia.org/wiki/Comma-separated_values
__________________
Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/09/2011, 08h53   #7
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Merci beaucoup c'est un très bon rappel, j'avais complètement zappé cet aspect.
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 09h54   #8
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
ça ne règle pas mon problème de caractère de retour dans la colonne texte pour autant. Je n'ai aucun " dans ce fichier permettant de délimiter ce qui est texte.

Je teste le caractère Chr(9) pour la tabulation.
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 09h57   #9
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par lodan Voir le message
ça ne règle pas mon problème de caractère de retour dans la colonne texte pour autant. Je n'ai aucun " dans ce fichier permettant de délimiter ce qui est texte.

Je teste le caractère Chr(9) pour la tabulation.
montre ton code et un bout de ton fichier source
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 11h34   #10
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Mon code partiel

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
$separateur = Chr(9);
if(file_exists($fileinput))
	{
 
        if (($handle = fopen($fileinput, "r")) !== FALSE) 
        {
            while (($data = fgetcsv($handle, 1000, $separateur)) !== FALSE) 
            {
 
                            $queryString = "INSERT INTO ......
 
}
}
 
        fclose($handle);
 
	}
Si joint un extrait du fichier
Fichiers attachés
Type de fichier : txt extrait.txt (1,3 Ko, 6 affichages)
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 11h39   #11
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
c'est un fichier qui sort d’où ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 13h53   #12
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
D'une appli access.
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 14h17   #13
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
la sortie n'est pas correct, les sauts de lignes doivent être encapsuler, t'as sans doute une option dans accès pour ca
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 14h39   #14
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Ok je redemande une extraction du fichier.

Merci
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 10h17   #15
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Merci à tous,

J'ai reçu un autre fichier qui n'était pas meilleur.

J'ai donc compté le nombre de champs de chaque ligne. Une ligne normale devant en contenir 31.

Si ce n'était pas le cas alors je cumul les champs jusqu'à ce que j'en ai 31.

Et ensuite c'est bon.

Un peu empirique, mais mon client n'était pas très volontaire pour faire mieux sur la livraison du fichier à traiter.

Encore merci
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h08.


 
 
 
 
Partenaires

Hébergement Web