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 un chiffre avec fgets($my_file) [PHP 5.3]


Sujet :

Langage PHP

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

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 25
    Points : 20
    Points
    20
    Par défaut Lire un chiffre avec fgets($my_file)
    Bonjour,

    Je m'arrache les cheveux sur une bête conversion string > int.

    Oui, j'ai essayé le fameux (int) et aussi intval() mais aucun des deux ne marche, et je pense que ça vient du fait que mon chiffre provient d'un fichier texte, lu avec fgets(), car quand j'essaye mon code avec un "vrai" string, il fonctionne.

    voici le code, ce sera plus clair:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    // 1/ on ouvre le fichier (il contient uniquement le texte suivant : 5)
    $my_file = fopen(dirname( __FILE__ ) . '/evenement/star.txt', 'r');
     
    // 2 : lit le nombre d'étoiles
    $star_count = fgets($my_file); 
     
    // 3: test
    echo $star_count; // affiche bien 5	
     
    // 4: vérifie qu'il y a au moins une étoile
    if ((int)$star_count > 0){
    	echo 'au moins une étoile';	
    }
    Mon problème: on ne rentre jamais dans le IF!

    J'ai essayé cette astuce:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if ((bool)$star_count == true){
       echo 'au moins une étoile';	
    }
    Ca fonctionne mais je suis quand même bloquée après, car dans mon IF, je boucle sur le nombre d'étoile, et là c'est pas un cast vers un booléen qui va m'aider!!

    Je précise que si je remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $star_count = fgets($my_file);
    ...par :
    ...tout fonctionne bien!

    Merci de votre aide!


    --
    Il faut avoir des rêves suffisamment grands pour ne pas les perdre de vue quand on les poursuit. Oscar Wilde

  2. #2
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 10
    Points : 13
    Points
    13
    Par défaut
    Salut,

    Ton code fonctionne chez moi :
    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
     
    <?php
    // 1/ on ouvre le fichier (il contient uniquement le texte suivant : 5)
    $my_file = fopen(dirname( __FILE__ ) . '/evenement/star.txt', 'r');
     
    // 2 : lit le nombre d'étoiles
    $star_count = fgets($my_file); 
     
    // 3: test
    echo $star_count; // affiche bien 5	
     
    // 4: vérifie qu'il y a au moins une étoile
    if ((int)$star_count > 0){
    	echo 'au moins une étoile';	
    }
    ?>
    Dans le fichier : résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    root@vm:php test.php
    5
    au moins une étoile
    Questions bêtes :
    - Windows ou Linux ?
    - es-tu absolument sur que ton fichier ne contient que 5 sans absolument aucun caractère qui se cacherait dans ta ligne ? (chose qui me paraîtrait bizarre puisqu'en théorie même en écrivant "5 test" cela devrait fonctionner)

  3. #3
    Membre éprouvé
    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
    Points : 1 057
    Points
    1 057
    Par défaut
    Salut,

    Essaye de faire un var_dump de $star_count, de mon côté ca m'affiche :

    string '5' (length=4)
    Par contre si j'ouvre le fichier text avec notepad++ et que je l'encode en UTF-8 sans bom tout marche bien

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

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par amoiraud Voir le message
    que je l'encode en UTF-8 sans bom tout marche bien
    BINGO! Merci de ton aide, c'était bien un "bom" qui trainait en début de fichier, en le convertissant en "sans bom", ça fonctionne bien.

    Merci beaucoup!

    Merci aussi à Seyta, pour info, je suis sur window mais je travaille en prod en direct (ftp) donc sur linux.

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

Discussions similaires

  1. lire seconde ligne d'un fichier avec fgets
    Par key94 dans le forum C
    Réponses: 6
    Dernier message: 29/12/2010, 18h43
  2. Lire des chiffres avec les virgules
    Par stiko dans le forum C++
    Réponses: 4
    Dernier message: 19/07/2006, 23h04
  3. [Script] Lire du PHP avec fgets ?
    Par kahya dans le forum Langage
    Réponses: 5
    Dernier message: 19/05/2006, 10h11
  4. []générer et LIRE du xml avec vb: sélection d'un node
    Par chris21 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 19/09/2003, 13h14
  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