Aller au contenu

problème de fin de ligne dans .txt


lorik

Sujets conseillés

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'.

$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.

Lien vers le commentaire
Partager sur d’autres sites

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...

:(

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...