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 :

Colle de chez colle avec fgets


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 22
    Points : 19
    Points
    19
    Par défaut Colle de chez colle avec fgets
    Bien le bonjour tout le monde

    bon, je ne vais pas y aller par 4 chemins, j'ai retourné le pb dans tous les sens et je n'ai absolument aucune réponse....

    j'explique

    je suis en train de faire un "analyseur de log d'un jeu", je touche presque au but...
    donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while(!feof($fichier))
    { 
    	$lignefichier[$nblignes] = fgets($fichier,4096); //chaque ligne est stockée dans le tableau '$lignefichier'
    	$nblignes++; //et on en profite pour calculer le nombre de ligne
    }
    j'ouvre le fichier, le lis, le stocke dans un tableau, tout ça, c'est OK




    au moment de la restitution du tableau, j'ai quelques désagréables surprises :

    Je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while($lignedebutpartie < $lignefinpartie)
    {
    	echo "<br>".$lignefichier[$lignedebutpartie]."<br>";
    	$lignedebutpartie++;
    }
    jusque là rien de méchant, car le tableau est restitué integralement

    mais, dans le log, certaines lignes sont bonnes, ex :
    L 08/27/2009 - 20:53:30: (SKIN) Survivor Louis changed model from models/survivors/survivor_manager.mdl to models/survivors/survivor_manager.mdl via HandleCommand_JoinTeam
    (bien longue)

    mais celle là ne passe pas :
    L 08/27/2009 - 20:53:30: "Bill<4><BOT><>" connected, address "none"
    elle est restituée comme cela :
    L 08/27/2009 - 20:53:30: "Bill<4><>" connected, address "none"
    et celle là (encore pire) :
    L 08/27/2009 - 20:53:30: "Bill<4><BOT><Survivor><NamVet><ALIVE><100+0><setpos_exact -7978.12 -15060.50 345.99; setang 0.00 -178.00 0.00><Area 67047>" spawned
    comme ça :
    L 08/27/2009 - 20:53:30: "Bill<4><100+0>" spawned

    Alors, question, à quoi est ce dû ? ce n'est ni la longueur (les longues lignes passent, voir au dessus), ni les majuscules (Bill a une majuscule et ça passe).
    En plus, ça a l'air d'être raccourci au centre de la phrase...


    Merci à celui qui trouve, car là je cale.......

    Bonne journée

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Si vous regardez la source de votre script, vos lignes sont bien complètes ? Parce que là, étant donné qu'il y a des choses qui sont assimilables à des balises, votre navigateur va chercher à les interpréter si votre document est vu comme étant un document HTML (entête Content-type: text/html, renvoyé par défaut par PHP).

    Si vous voulez les afficher au sein d'un document HTML vous devez auparavant utiliser htmlentities, par exemple, pour les restituer convenablement.

  3. #3
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    Oui, il faudrait utiliser la fonction htmlentities pour ne pas que le texte encadré de < > soit interprété comme une balise html.

    Mais si tu regarde la source de ta page (avant d'utiliser cette fonction), tu verras que le texte "disparu" apparait bien, il est juste interprété comme du code html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<br>".htmlentities($lignefichier[$lignedebutpartie])."<br>";
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    alors là, chapeau les gars, vous êtes des As

    Jamais je n'aurai pensé que cela aurait pu paraitre pour une balise....

    je dirai même, dans mon cas :
    echo "<br>".htmlentities(utf8_decode($lignefichier[$lignedebutpartie]))."<br>";

    et ça marche impecc

    Merci beaucoup et bonne continuation

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Invité de commande avec fgets
    Par Freed0 dans le forum Réseau
    Réponses: 5
    Dernier message: 06/05/2006, 18h16
  2. Problème d'accent avec fgets
    Par d.w.d dans le forum Langage
    Réponses: 2
    Dernier message: 31/03/2006, 07h37
  3. Lecture d'une chaine de caractère avec fgets
    Par mayoouketchup dans le forum Langage
    Réponses: 9
    Dernier message: 22/12/2005, 16h17
  4. probleme avec fgets
    Par semaj_james dans le forum C
    Réponses: 3
    Dernier message: 09/12/2005, 21h00
  5. Problème avec fgets et tube...
    Par tchingoo dans le forum POSIX
    Réponses: 5
    Dernier message: 22/08/2003, 17h03

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