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 :

fgets et integer


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2012
    Messages : 77
    Par défaut fgets et integer
    Bonjour,

    Je vais vous poser une question de la mort qui tue, de quoi passer pour la pire noob qui soit! M'enfin, un peu comme à chaque fois que je poste ici!

    Alors voilà mon problème, J'ouvre un flux SGML et je récupère en fait seulement le contenu de la première ligne du flux. Pour ce faire, voici le bout de code que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $v_flux = fopen($v_chemin, 'r');
      if ($v_flux != FALSE){
        $v_nb_docs = fgets($v_flux);
      }
    Comme vous l'avez surement compris au nom de ma variable, l'information que je récupère est censé être un int, or il s'agit d'un string, type de la fonction fgets.

    Mais voilà, cette information que je récupère est censé être utilisée plus tard dans un calcul. Et le résultat de ce calcul est toujours 0. A cause du typage.
    J'ai essayé de réglé le problème avec la focntion intvar() comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $v_flux = fopen($v_chemin, 'r');
      if ($v_flux != FALSE){
        $v_nb_docs = intvar(fgets($v_flux));
      }
    Mais ça n'a pas réglé le problème. En effet, la chaine récupérée est bien souvent (ce n'est pas une généralité) au format "01234". Elle commence par un zéro... et il me semble que ça bloque pour la fonction intvar.

    Bref, si vous avez une alternative à me proposer... Merci!

  2. #2
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Par défaut
    Salut,

    Heu... tu veux sans doute parler de intval ?

  3. #3
    Membre confirmé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2012
    Messages : 77
    Par défaut
    Ouip! Désolé, j'ai écrit ça de tête! Mais c'est bien ça!

  4. #4
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Par défaut
    Ca te donne quoi si tu fait un var_dump($v_nb_docs); ?

  5. #5
    Membre confirmé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2012
    Messages : 77
    Par défaut
    J'ai essayé ça comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $v_flux = fopen($v_chemin, 'r');
      if ($v_flux != FALSE){
        $v_ligne = fgets($v_flux);
        $v_nb_docs = ltrim($v_ligne, '0');
        echo "flux : $v_fichier<br/>nombre : $v_nb_docs<br/>";
        var_dump($v_nb_docs); 
      }
    Et ça me donne ça:
    flux : fichier_type1_00001
    nombre : 01234
    string(14) "01234 "
    Je n'explique pas trop le string 14 car en fait, la première ligne du flux que je récupère avec le fgets est
    <NBDOCS>01234
    Comme tu peux voir, le ltrim ne donne rien (j'avais pourtant de l'espoir!) puisqu'il ne supprime pas le caractère '0'. Ou alors, je l'uilise très mal!

    EDIT : le 14 provient du fait qu'il y a un espace après la série de chiffres

  6. #6
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Par défaut
    Et le intval($v_nb_docs) te donne quoi ?

    J'ai testé ca en local :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $test = "01234         ";
    var_dump($test);
    var_dump(intval($test));
    Et j'obtient ca :

    string '01234 ' (length=14)

    int 1234

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

Discussions similaires

  1. [CONVERSION] Integer to Word ?
    Par ulysse66x dans le forum Langage
    Réponses: 5
    Dernier message: 14/06/2003, 20h38
  2. [debutant] Comment afficher un integer a l'ecran
    Par Johngame dans le forum DirectX
    Réponses: 1
    Dernier message: 05/06/2003, 20h35
  3. taille des integer sous Interbase 6.0
    Par kinda dans le forum InterBase
    Réponses: 4
    Dernier message: 04/04/2003, 11h34
  4. Concaténation de String et Integer
    Par Ingham dans le forum Langage
    Réponses: 5
    Dernier message: 21/01/2003, 17h26
  5. comment integer une animation swf dans une page
    Par naili dans le forum Intégration
    Réponses: 7
    Dernier message: 18/09/2002, 18h54

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