lorik Posté 30 Juin 2008 Posté 30 Juin 2008 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.
captain_torche Posté 30 Juin 2008 Posté 30 Juin 2008 Regarde ce que donne un file($fichier), il devrait te créer un array avec une entrée pour chaque ligne.
lorik Posté 30 Juin 2008 Auteur Posté 30 Juin 2008 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...
tisha_carpenter Posté 30 Juin 2008 Posté 30 Juin 2008 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.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant