Version complète: sur le forum Webmaster Hub : problème de fin de ligne dans .txt
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
lorik
Bonjour,

Je cale sur un problème :
Je dois importer dans une table le contenu d'un fichier txt, ligne par ligne. Normalement, chaque ligne compte 5 'champs'.


CODE
$fp=fopen($fichier, "r");
while ($lecture=fgets($fp)) // récupère les ligne une par une
{
$tab=explode (';', $lecture); // explose les infos de la ligne
// suite du traitement...
}


Bon, ça marche impec, sauf que... dans certains champs du fichier txt, j'ai parfois des \r\n qui se promènent au milieu du texte, et du coup, le fgets se met à patiner, puisque il semble qu'il utilise les caractères fins de lignes pour séparer les lignes (logique, evidement ! ).

à votre avis, y a t il une méthode pour supprimer les \r\n à l'intérieur des champs, pas les 'vrais', ceux de fin de ligne ?

Ou une autre façon de récupéer une ligne complète en se passant de fgets ?

Merci de votre aide.
captain_torche
Regarde ce que donne un file($fichier), il devrait te créer un array avec une entrée pour chaque ligne.
lorik
Salut Captain,

Même problème, file s'appuie sur les \r\n pour déterminer la fin de la ligne...

La solution, je pense, c'est supprimer tous les \r\n 'mal placés'. J'ai regardé le fichier, les bons sont en " \r\n", les mauvais en \r\n , sans les quotes.

Le problème, c'est que les fichiers textes font 50 Mo, je vois pas trop comment faire sans faire peter le serveur : Je me vois pas mettre tout le fichier dans une variable, et lancer un str_replace dessus, encore moins une regex, même si je savais la construire...
sad.gif
tisha_carpenter
CITATION(lorik @ lundi 30 juin 2008 à 06:28) *
La solution, je pense, c'est supprimer tous les \r\n 'mal placés'. J'ai regardé le fichier, les bons sont en " \r\n", les mauvais en \r\n , sans les quotes.


C'est pas plutôt l'inverse? Car si c'est l'inverse, alors c'est un format CSV et la fonction fgetcsv() gère les subtilités de ce format.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.