begin process at 2012 02 14 00:48:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Lecture d'un fichier.txt


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Lecture d'un fichier.txt

lundi 10 décembre 2007 à 11:21:35 | Lecture d'un fichier.txt

MAZALEYRAT

Sujet : Probleme de lecture d'un fichier de type.txt avec PHP

Bonjour,
Je me casse la tête depuis quelques jours sur la lecture d'un fichier .txt (que me procure un client). Ce dernier est généré par un serveur selon un codage (à priori) incompatible avec php....
Le problème posé :
- j'utilise les fonctions habituelles et classiques de php pour l'ouverture du fichier, sa lecture et la récupération de l'ensemble des données
- le fichier .txt (client) comprend plusieurs variables que je "split" dans un tableau.
- lorsque je lis chacune des valeurs du tableau, il apparait des caractères bizarres (des ? pour être très précis) devant chaque lettre.
- en revanche, en avant de lancer mon petit programme, si j'ouvre le fichier original (client), que je fais un copier/coller dans un éditeur classique (type TextEdit sur Mac), que j'enregistre ce nouveau fichier .txt avec le même nom, là mon php fonctionne parfaitement.

Le but : parvenir à ouvrir et récupérer les infos correctement du fichier original .txt (client) sans avoir à faire de manipulations préalables sur le dit fichier.

Ben je ne sais si c'est tordu, compliqué, basique, hilarant pour les pros.... mais moi je m'y perds et j'ai épuisé toutes mes ressources... même après avoir parcouru des km de scripts, conseils et autres tutoriaux sur tous les sites dont je connais l'existence..... help me please !!!!!!!

le code de mon programme php :

<?php
$fichier = "test.txt";
$handle = fopen ($fichier, "rb");
$contenu = fread($handle, filesize ($fichier));
// je récupère les différentes variables du fichier en les "spitant" sur la particule "&"
$liste = preg_split("/[&]+/", $contenu);
//truc bizarre contenu dans l'entête du fichier client
$truc = $liste[0];
//Pour la variable numeromachine
$num = $liste[1];
$numeromachine = preg_split("/[=\n]+/", $num);
//Pour la variable nom
$nomtemp = $liste[2];
$nom = preg_split("/[=\n]+/", $nomtemp);
//Pour la variable deno
$denotemp = $liste[3];
$deno = preg_split("/[=\n]+/", $denotemp);
//Pour la variable gain
$gaintemp = $liste[4];
$gain = preg_split("/[=\n]+/", $gaintemp);
//Pour la variable date
$datetemp = $liste[5];
$date = preg_split("/[=\,]+/", $datetemp);
//Pour la variable heure
$heuretemp = $liste[6];
$heure = preg_split("/[=(\n)]+/", $heuretemp);
fclose($handle);
// Essai de print du contenu d'une des valeurs du tableau >>>>> voilà mon problème avec tous les ??????? qui apparaissent !!!!!!!
print_r($numeromachine);
?>
lundi 10 décembre 2007 à 15:54:22 | Re : Lecture d'un fichier.txt

neigedhiver

Salut, Cherche par là : http://www.php.net/manual/fr/function.utf8-encode.php http://www.php.net/manual/fr/function.utf8-decode.php
mardi 11 décembre 2007 à 09:03:07 | Re : Lecture d'un fichier.txt

MAZALEYRAT

Merci de t'être penché sur mon problème... et merci pour la réponse apportée !
...malheureusement, après toute la nuit à chercher à mettre en place un script pour encoder mes valeurs en utf8.... ben rien à faire.... le résultat est toujours le même avec les mêmes "?" partout.... mais il se peut que je ne sache pas écrire correctement, et au bon endroit, cette ligne de code magique ! c'est désespérant de se prendre la tête sur des trucs aussi nuls et qui me bloquent pour tout le reste de mon développement.

Donc si il te reste encore un peu d'énergie et de temps à "perdre", je suis preneur d'une "intervention" plus en profondeur... avec ma reconnaissance éternelle, à défaut de dire "à charge de revanche"...sauf si en Flash je peux apporter mes quelques contributions !

Bonne journée.
mardi 11 décembre 2007 à 11:13:23 | Re : Lecture d'un fichier.txt

neigedhiver

Salut, Tu dis que t'as essayé, en vain, d'encoder en utf8... As-tu tenter de décoder, pour le cas où ce serait justement de l'utf8 ? Tu dis qu'en copiant collant dans ton éditeur, ça fonctionne. C'est probablement que l'encodage d'origine du fichier est différent de celui que tu utilises. Maintenant, il reste possible que ce problème d'encodage ne se voit qu'à l'affichage à l'écran. Dans ce cas, il faut veiller à uniformiser l'encodage de la page : soit tout en utf-8, soit tout en iso-8859-1. L'encodage d'origine du txt, toi seul peut le voir. Je sais pas ce que vaut cet éditeur sous Mac, mais s'il est plus évolué que le notepad de windows, il devrait t'indiquer quel jeu de caractères est utilisé pour ce fichier : utf8 ou iso ? Si tu affiches en iso et que le fichier est en utf8 => utf8_decode() Si tu affiches en utf8 et que le fichier est en iso => utf8_encode() Si le fichier et l'affichage sont tous les deux en utf8 (ou en iso) => normalement rien à faire : je doute que tu sois dans ce cas là. Voilà ce que je peux dire pour l'instant...
mardi 11 décembre 2007 à 11:44:39 | Re : Lecture d'un fichier.txt

MAZALEYRAT



...coder... décoder... oui j'ai essayé tous les cas de figures
...mon écran/navigateur réglé aussi en utf8
...quand depuis php j'envoie les infos dans Flash, elles arrivent aussi avec tous ces fichus "???"

J'ai toutefois remarqué une chose : si tu regardes bien mon code php, il y a plusieurs étapes : d'abord la lecture des données, puis le spit des variables (avec la particule "&") puis le split des valeurs pour chaque variable (avec le saut de ligne \n). Si je fais un print sur la première étape, la donnée globale lue s'affiche correctement (intégralité du fichier texte)... mais passée cette première étape, et juste après le premier split (avec le "&") c'est à partir de là que ça déconne.

D'ailleurs, as tu essayé de lancer mon script .php depuis ton navigateur ? .. et si oui, constates tu toi sur ton écran le même phénomène ???? ... si oui c'est bien que mon code déconne....
Accès : www.hygienet.fr/test/test.php
Accès fichier texte de base : www.hygienet.fr/test/test.txt

Merci.....
mardi 11 décembre 2007 à 12:36:00 | Re : Lecture d'un fichier.txt

neigedhiver

Re, C'est bien un problème d'encodage : ton fichier texte est en UTF-16 Si tu affiches ta page en UTF-16, t'as des caractères asiatiques (je saurais pas dire quelle langue, mais ce sont bien des idéogrammes). Ton code n'a rien de transcendant, en ce sens qu'il ne fait rien sur les caractères. Donc ça ne vient pas de lui... Par contre, c'est vrai que le fichier texte de ton client est un peu mal foutu...
mardi 11 décembre 2007 à 12:51:13 | Re : Lecture d'un fichier.txt

MAZALEYRAT

RE..... Effectivement le fichier original .txt de mon client est assez étrange, mais hélas je ne peux rien y faire ni changer... et la solution qui consisterait à le transformer à la main dans un éditeur ad'hoc est à exclure (la procédure doit se faire de manière automatique)... donc il ne me reste plus que la solution de trouver un moyen dans php pour résoudre ce problème....
Mais ce que je ne comprends pas c'est qu'avant de "spliter" les données lues, l'affichage se fait correctement, et dès que je split ça commence à déconner.... très bizarre....
D'après toi, existe-t-il une solution avec php pour lire ce p... de fichier source et le re-écrire en lieu et place avec un bon codage utf8 ?.... ce qui me permettrait tout de suite derrière de le lire à nouveau sans rencontrer ces fichus problème d'encodage UTF-16 ?




Cette discussion est classée dans : fichier, liste, txt, preg, split


Répondre à ce message

Sujets en rapport avec ce message

PHP, Media player et split [ par bigbik ] Bonjour, Pour les besoins d'un site j'ai un script qui liste le contenu d'un répertoire contenant des fichiers audios et les affiche sous forme de l Ecrire, effacer et réécrire dans un fichier txt [ par Chris31000 ] Bonjour, J'ai récupéré un script de compteur en php il y a quelques jours que j'ai déjà pas mal modifié, avec beaucoup de mal, pour qu'il s'adapte à upload d'un fichier txt de grande taille [ par langagec08 ] bonjour tous le monde ..ben j'ai un fichier .txt de taille 8MO que je dois charger dans ma base de données .....et je sais pas comment procéder[^^sad1 Formulaire Spry enregistrement sur fichier txt [ par jkai ] bonjour depuis plusieur jours je cherche le code qui puisse enregistrer mon formulaire composer de 4 champs. je voudrais le code qui contient le bouto boucle for [ par nbpro ] voila g un problème j'ouvre un dossier qui contiens des .txt ouvre et lit les .txt en récupère des données. Des requête s'exécute dans une boucle j' sélectionner un contenu dans un fichier texte et écrire ce contenu dans une table sql [ par michelvernet2 ] bonjour, voilà, j'ai un répertoire sur mon disque C qui contient on va dire 100 fichiers .txt sous la forme 1.txt , 2.txt 3.txt etc ... dans ces fich executer mon script en fonction d'un fichier txt. [ par elmaestro95 ] bonjour a tous je vous explique mon probleme je voudrai savoir si il est possible d'executer mon code php en foction de nouvelle données que je reçois Fichier texte dans un tableau [ par cchaillet ] Bonjour, Je suis sous UBUNTU avec XAMPP. J'ai le fichier texte fichier.txt situé dans le répertoire /opt/lampp/htdocs/Serveur_test/content/PDF_to_TXT/ Ficher TXT dans mySql [ par crashfab ] Bonjour tout le monde , je suis étudiant en IUT informatique et je dois créer pour mon projets un Générateur aléatoire de Mots Croisée , j'ai donc tel Utilisation des .txt [ par GKarrman ] Voilà, je suis débutant ( mais motivé [^^langue3] ), et voilà mon idée: [list] [*] Mon programme php reçoit une donnée d'un fichier .txt ( appelons


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,558 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales