IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Lire les lignes d'un fichier .txt en HTML


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Lire les lignes d'un fichier .txt en HTML
    Bonjour, je dois réaliser un projet ou je dois tout coder en HTML/php. Le but c'est de lire le fichier .txt et qu'il prend en compte chaque ligne de ce fichier et qu'il le met par exemple dans un tableau ou par la suite je pourrai faire une recherche (noms des villes, noms de la carte réseau, ordre croissant...). Mais je sais pas par ou commencer, je sais qu'il y un le CSV qui lit ligne par ligne avec un ";" mais se serai trop compliquer de changer tous mes fichiers .txt ( j'en ai 3000 a peu près ) Pièce jointe 140321

  2. #2
    Membre confirmé

    Homme Profil pro
    Chomeur
    Inscrit en
    Juin 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 347
    Points : 452
    Points
    452
    Par défaut
    Bonjour,

    Ci-joint un bout de code que j'utilise pour parser un fichier texte uploadé par un utilisateur. Ici "$tmpName" correspond au fichier uploadé, donc il faudra l'adapter si il faut pointer sur un fichier déjà présent sur le serveur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    $tmpName = $_FILES ['userfile'] ['tmp_name'];
    // ouvrir fichier pour parcours
    $handle = @fopen ( $tmpName, "r" );
    if ($handle) {
    	// Le fichier est ok -> parcours par ligne
    	$compteurLigne = 0;
    	while ( ($ligne = fgets ( $handle, 4096 )) !== false ) {
    		// les lignes sont transmises dans un tableau
    		$ligne = trim ( $ligne );
    		$ListLigne [$compteurLigne] = $ligne;
    		$compteurLigne ++;
    	}
    	if (! feof ( $handle )) {
    		// fopen mal termine : fichier ko!
    		$logger->logThis ( __FILE__ . " !!! Erreur: fopen() a échoué" );
    	}
    	fclose ( $handle );
    	$logger->logThis ( __FILE__ . " : Submit file, " . $compteurLigne . " lignes à traiter" );
    } else {
    	// fopen ne retourne rien : fichier ko!
    	$logger->logThis ( __FILE__ . " !!! Erreur: fopen() a échoué" );
    }
    Bon courage
    Signature à venir...
    Ancienne : Divers NTIC (PHP, Dojo, à venir...) : http://tif44.fr/blog/

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Merci pour ton début de code, mais ton "$tmpName" c'est le nom de ton fichier ? Mais si j'ai 3000 noms différents, je devrais faire la même chose pour chaque fichier .txt ?

  4. #4
    Membre confirmé

    Homme Profil pro
    Chomeur
    Inscrit en
    Juin 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 347
    Points : 452
    Points
    452
    Par défaut
    Bonjour,

    Oui, il va falloir faire une boucle qui donne le nom de chacun des fichier à traiter, ici $tmpName, de façon à les ouvrir pour en extraire les lignes.

    Si ça peut t'aider, sous windows (il existe forcément un équivalent linux) tu va dans le répertoire qui contient tes fichiers, tu fais clic droit en maintenant Shift et tu peux choisir "Ouvrir une fenêtre de commande ici". Dans l'invite de commande tu saisi "dir > temp.txt", et oh miracle un fichier "temp.txt" apparait qui contient tous les noms des fichiers du répertoire dans lequel tu est positionné. Du coup, il n'y a plus qu'a faire une moulinette qui ouvre ce fichier et qui le parcours, en esquivant les lignes inutiles, pour déterminer les noms des différents fichier à traiter...

    Bon courage
    Signature à venir...
    Ancienne : Divers NTIC (PHP, Dojo, à venir...) : http://tif44.fr/blog/

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Ah d'accord, ton dossier c'est " $tmpName " et tous tes fichiers sont dedans enfaite ? Plus qu'à faire une boucle qui ouvrira chaque fichier de mon dossier !!
    Et "userfiles" c'est la ou je met mon fichier ?
    mon dossier est un peu compliqué, c'est 1 dossier ou y'a 5 fichiers et y'en a d'autre après, plus tot tous les réunir dans un seul dossier ?

  6. #6
    Membre confirmé

    Homme Profil pro
    Chomeur
    Inscrit en
    Juin 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 347
    Points : 452
    Points
    452
    Par défaut
    Non, désolé si ça n'est pas clair... Dans le bout de code $tmpName correspond au nom du fichier qu'un utilisateur sélectionne comme pour l'uploader, d'où le "$_FILES ['userfile'] ". Ces choses là ne t’intéresse pas dans ton cas. $tmpName correspond à l'url du fichier à ouvrir via fopen : http://www.php.net/manual/fr/function.fopen.php

    Si tu réunis tous tes fichiers dans un seul répertoire et que tu génère le "temp.txt" comme vu au-dessus, tu va indiquer directement $tmpName = "temp.txt" (assure toi que l'url est cohérente avec le chemin à parcourir pour atteindre le fichier). De cette façon tu devrai obtenir rapidement un tableau, ici $ListLigne, qui contiendra l'ensemble des noms des fichiers que tu veux parcourir. Il faudra ajouter des filtres pour ne conserver que les noms des fichiers, par ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // la ligne ne doit pas etre vide
    // la ligne commence par une date
    // la ligne ne doit pas contenir <DIV>
    $ligne = trim ( $ligneATraiter );
    if (! empty ( $ligne ) && preg_match ( '#^\d{1,2}/\d{1,2}/\d{4}+#', $ligne ) && ! preg_match ( '#<[A-Z]+>#', $ligne )) {
    	// titre apres le 36e caracteres
    	$ligne = substr ( $ligne, 36 );
     
    	// titre fichier entre debut ligne et extension
    	$titreFichier = addslashes ( substr ( $ligne, 0, strrpos ( $ligne, "." ) ) );
    	$extFichier = addslashes ( substr ( $ligne, strrpos ( $ligne, "." ) + 1 ) );
    => ajouter traitement ou stockage dans tab pour utilisation ulterieure
    }
    Ensuite dans un second temps, il faudra créer une boucle autour de ce tableau des noms de fichier afin de valoriser dynamiquement le nom du fichier à ouvrir pour en extraire les lignes...

    J'espère que c'est plus clair. Peut être qu'il serait préférable de faire tourner la boucle sur un fichier pris au hasard pour mieux comprendre le fonctionnement?

    Bon courage
    Signature à venir...
    Ancienne : Divers NTIC (PHP, Dojo, à venir...) : http://tif44.fr/blog/

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    J'ai pas compris a quoi sert ton temp.txt.
    Pourquoi je pas faire une boucle en utilisant glob sur le répertoire souhaité?
    Marcuscircus : La seule différence entre un rêve et sa réalisation, c'est l'envie

  8. #8
    Membre confirmé

    Homme Profil pro
    Chomeur
    Inscrit en
    Juin 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 347
    Points : 452
    Points
    452
    Par défaut
    Oui, ça marche aussi avec opendir + glob du moment que les fichiers à exploiter sont sur le système de fichiers local. Le passage par temp.txt permettait de mettre en pratique un cas de parsing de fichier texte plus simple que la mécanique à mettre en œuvre pour gérer le fichier de log fourni en pièce jointe...
    Signature à venir...
    Ancienne : Divers NTIC (PHP, Dojo, à venir...) : http://tif44.fr/blog/

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bah j'ai essayé juste avec un fichier pour voir si sa fonctionne car après j'ai juste a faire une boucle ou la même chose avec les fichiers !!
    Mais ça m'affiche même pas de tableau, mais 2 erreurs, 1ere : logger n'est pas défini et la 2e : (call to a member function logThis() on a non-object)

    J'ai mis mon fichier (DYO.txt) dans le dossier ou je travaille mon code, c'est bien comme ca que je dois faire pour l'ouvrir : $tmpName = "DYO.txt";
    puis apres ton code pour qu'il lit le fichier et qu'il le range dans un tableau ?!

  10. #10
    Membre confirmé

    Homme Profil pro
    Chomeur
    Inscrit en
    Juin 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 347
    Points : 452
    Points
    452
    Par défaut
    Commente ou supprime les loggers si tu n'en utilise pas... Quant à l'url, dans un premier temps il sera peut être plus facile d'utiliser une url absolue : http://www.php.net/manual/fr/function.fopen.php

    Bon courage
    Signature à venir...
    Ancienne : Divers NTIC (PHP, Dojo, à venir...) : http://tif44.fr/blog/

  11. #11
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    tu peux poster le contenu de ton fichier DYO.txt (pas sous forme d'image) ?
    ce message vous a aidé ! Un petit click sur fait toujours plaisir

    "Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent." Bev Littlewood & Lorenzo Strigini

    "Le logiciel, c’est comme le sexe, c’est meilleur quand c’est libre/gratuit." Linus Torvalds

Discussions similaires

  1. Compter les lignes d'un fichier TXT
    Par Slyer4ever dans le forum C
    Réponses: 8
    Dernier message: 02/10/2013, 10h03
  2. Exercice : inverser les lignes d'un fichier .txt
    Par like i love c dans le forum C
    Réponses: 14
    Dernier message: 07/01/2012, 15h43
  3. Lire les lignes d'un fichier avec csh
    Par nicolas581 dans le forum Linux
    Réponses: 4
    Dernier message: 24/03/2010, 16h38
  4. Comparer les lignes d'un fichier txt
    Par Casimir* dans le forum VBScript
    Réponses: 3
    Dernier message: 28/08/2007, 15h12
  5. [JACOB] Lire les lignes d'un fichier Word
    Par djools45 dans le forum Documents
    Réponses: 2
    Dernier message: 25/05/2007, 15h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo