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 :

Transformation string en float aléatoire [PHP 5.1]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de elcoyotos
    Homme Profil pro
    Amateur passionné
    Inscrit en
    Octobre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Amateur passionné

    Informations forums :
    Inscription : Octobre 2006
    Messages : 496
    Par défaut Transformation string en float aléatoire
    Bonjour,

    Je rencontre un soucis. j'ai besoin de transformer une variable string en float.
    Quand je l'extrait d'une base de données, cela fonctionne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $var = "7.1";
    $var_float  = floatval($var);
    echo var_dump($var_float)."<br>";
    Mais, quand je l'extrait d'un fichier, cela ne fonctionne plus (la variable a la même valeur dans les deux cas). Ou plutôt, elle est bien convertit (double) mais sa valeur passe à 0 ???????
    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
     
    $file = fopen('http://script-php-livre-d-or.arizona-dream.com/version_livre_dor.txt','r');
     
    while(!feof($file)){
        $line.=fgets($file,500); // Max 500 chars
    }
    preg_match_all('#<data[^>]*>.*</data>#i',$line,$resultat);
     
    foreach ($resultat as $val){
        $derniere_version = $val[0];
        $date_version = $val[1];
        $log_version = $val[2];
    }
     
     
    $var_float = floatval($derniere_version);
    echo gettype($var_float)."<br>";
    echo $var_float."<br>";
    Quelqu'un pourrait-il m'expliquer se mystère ????

    PS : Je sais que je peux faire quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $var_float = (filter_var($derniere_version, FILTER_SANITIZE_NUMBER_INT));
    Mais pour des raisons de compatibilité avec les versions inférieures à la 5.2 je ne peux utiliser filter_var

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 334
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 334
    Billets dans le blog
    17
    Par défaut
    print_r($resultat) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Array
    (
        [0] => Array
            (
                [0] => <data>7.1</data>
                [1] => <data>13-12-2009</data>
                [2] => <data>Ajout d'un système ANTIFLOOD activable ou pas.<br />Correction d'un bug à l'installation.<br />De nouveau installable en local.<br />Correction de quelques petits bugs</data>
            )
     
    )
    Tu fais donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $var_float = floatval('<data>7.1</data>');
    D'où le retour de 0.

    Pour capturer la valeur entre <data> : #<data[^>]*>(.*)</data>#i

    Note : si le fichier .txt est un XML tu peux utiliser SimpleXML.

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Pour capturer la valeur entre <data> : #<data[^>]*>(.*)</data>#i

    Note : si le fichier .txt est un XML tu peux utiliser SimpleXML.
    c'est plutôt

    #<data[^>]*>(.*?)</data>#i

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 334
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 334
    Billets dans le blog
    17
    Par défaut
    A quoi sert le ? ?

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Séb. Voir le message
    A quoi sert le ? ?
    pour le mettre en mode lazy, sinon * ca prendre tout jusqu'au dernier </data>
    en mode lazy il prendre tout jusqu'au premier </data>

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 334
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 334
    Billets dans le blog
    17
    Par défaut
    Je ne connaîssais pas, j'utilise l'option de recherche U.
    Merci

  7. #7
    Membre éclairé Avatar de elcoyotos
    Homme Profil pro
    Amateur passionné
    Inscrit en
    Octobre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Amateur passionné

    Informations forums :
    Inscription : Octobre 2006
    Messages : 496
    Par défaut
    Merci Séb,

    Pour SimpleXML, j'évite car je souhaite que mon script tourne chez le plus de monde possible ....

  8. #8
    Membre éclairé Avatar de elcoyotos
    Homme Profil pro
    Amateur passionné
    Inscrit en
    Octobre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Amateur passionné

    Informations forums :
    Inscription : Octobre 2006
    Messages : 496
    Par défaut
    Pourtant, cela fonctionne correctement sans le ?

  9. #9
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 334
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 334
    Billets dans le blog
    17
    Par défaut
    Parceque tu as un <data> par ligne et que tu n'utilises pas l'option de recherche s avec laquelle les . incluent les retours à la ligne.

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

Discussions similaires

  1. fonction transformation string->int
    Par Edta dans le forum Général Python
    Réponses: 3
    Dernier message: 11/04/2006, 13h03
  2. [Debutant]Transformer string en int
    Par htaou dans le forum SL & STL
    Réponses: 7
    Dernier message: 09/09/2005, 21h28
  3. [string] [float] string to float en sql
    Par chickenhuchette dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 17/06/2005, 11h47
  4. [tableau à 2 dimensions] association String et float
    Par LoLoSS dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 12/07/2004, 10h53
  5. transformer string en numerique
    Par chrys76 dans le forum ASP
    Réponses: 14
    Dernier message: 05/12/2003, 13h27

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