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 :

Formatter un string


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2006
    Messages : 30
    Points : 18
    Points
    18
    Par défaut Formatter un string
    Bonjour à tous,

    Étant au travail, je ne peux vous présenter mon code mais voici, mon problème est fort simple :

    Je lis un fichier texte et le converti en String avec file_get_contents. Je parse ensuite la String pour trouver ce que je cherche, à savoir un montant d'argent formatté du genre 134 456 732.

    Je tiens ensuite à retirer les espaces blancs de ce nombre, question de le convertir ensuite en int pour m'en servir dans une addition (il est en effet impossible d'additioner un nombre possédant des espaces. L'addition ne tient alors compte que des chiffres situés avant le premier espace, à savoir ici 134)

    J'ai fait l'output de mes variables et tout est ok. L'output du résultat de mon parse donne bien 134 456 732 donc jusqu'à ce que je tente de retirer les espaces, c'est bon.

    Seulement voilà, j'ai tout essayé et rien à faire, une fonction du genre str_replace(" ",'',$string) ne fonctionne pas!!!

    Encore plus étrange :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $string = "123 456 788";
    $test = str_replace(" ",'',$string);
    echo $test;
    Ceci fonctionne à merveille : 123456788

    Merci d'avance pour vos suggestions.

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Il nous faudra malheureusement ton code (voir plus d'explications) parce que si tu utilises exactement la meme instruction pour remplacer les espaces entre ta variable parsée et la variable codée en dur là il n'y a aucune raison que ca ne marche pas.

  3. #3
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Points : 271
    Points
    271
    Par défaut
    Tu es sur que c'est bien un caractere espace et non un truc a la con ?

    Essai en fesant un
    echo urlencode($string);

    PS : les espaces doivent se transformer en %20 pas en autre chose.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2006
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par chaced Voir le message
    Tu es sur que c'est bien un caractere espace et non un truc a la con ?

    Essai en fesant un
    echo urlencode($string);

    PS : les espaces doivent se transformer en %20 pas en autre chose.
    En fait, mon fichier en est un .html donc oui, ca doit être des %20, pas le choix.

  5. #5
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $string = "123 456 788";
    $test = str_replace("\s","",$string);
    echo $test;
    et ceci ?
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  6. #6
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Points : 271
    Points
    271
    Par défaut
    Sinon méthode bourrin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $str=preg_replace('@([^0-9])@','',$str);
    Pour ceux qui ne lisent pas les regexp, ça vire simplement tout ce qui n'est pas un chiffre.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2006
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par RideKick Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $string = "123 456 788";
    $test = str_replace("\s","",$string);
    echo $test;
    et ceci ?
    En fait, avec une variable dur, ca va sans doute marcher mais j'avoue ne pas l'avoir essayé avec ma variable parsée.

    Merci du conseil, voilà une piste de solution possible.

    Tel que dit précédemment, mon fichier est de type html.

    Je me pose la question : dois-je chercher les espaces en tant que " " ou alors en tant que "%20" ?

    Citation Envoyé par chaced Voir le message
    Sinon méthode bourrin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $str=preg_replace('@([^0-9])@','',$str);
    Pour ceux qui ne lisent pas les regexp, ça vire simplement tout ce qui n'est pas un chiffre.

    Merci, je devrai aussi regarder ça.

  8. #8
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    en tant que "\s" car tu lis ton fichier avec file_get_contents() , tu prends donc le contenu et non l interpretation du fichier (donc que ton fichier soit html ou non , aucune difference -> %20 est Hors sujet)
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2006
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par RideKick Voir le message
    en tant que "\s" car tu lis ton fichier avec file_get_contents() , tu prends donc le contenu et non l interpretation du fichier (donc que ton fichier soit html ou non , aucune difference -> %20 est Hors sujet)
    dac, c'est ce je croyais.

  10. #10
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Points : 271
    Points
    271
    Par défaut
    Citation Envoyé par RideKick Voir le message
    en tant que "\s" car tu lis ton fichier avec file_get_contents() , tu prends donc le contenu et non l interpretation du fichier (donc que ton fichier soit html ou non , aucune difference -> %20 est Hors sujet)
    Le %20 c'etait juste pour voir si c'etait un vrai espace et pas un caractere a la noix genre un char 255... (qui ressemble a un espace mais n'en est pas un).

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2006
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Je vais tenter les quelques propositions soumises ici et si ca ne fonctionne toujours pas, je reviendrai avec mon code demain.

  12. #12
    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
    Citation Envoyé par RideKick Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $string = "123 456 788";
    $test = str_replace("\s","",$string);
    echo $test;
    et ceci ?
    \s ne fonctionnera pas avec les fonctions POSIX (ereg*). Cette "extension" est une fonctionnalité des fonctions PCRE (preg_*) - ces dernières étant, par la même occasion, recommandées aux premières.

    Citation Envoyé par chaced Voir le message
    Sinon méthode bourrin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $str=preg_replace('@([^0-9])@','',$str);
    Pour ceux qui ne lisent pas les regexp, ça vire simplement tout ce qui n'est pas un chiffre.
    Oui mais admettons qu'il y est 10 nombres dans le document, suivant la forme donnée plus tôt, au final il n'en restera qu'un seul (en ignorant le format précis ce ne sont que des spéculations)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $string = strip_tags(file_get_contents('http://www.developpez.net/forums/showthread.php?t=412941'));
    $numbers = preg_match_all('~\d+\s*+~', $string, $matches, PREG_SET_ORDER);
    foreach ($matches as $m) {
        echo $m[0] . '<br/>';
    }
    echo $string;

  13. #13
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Points : 271
    Points
    271
    Par défaut
    Suivant son explication j'en ai déduis qu'il avait fait un traitement au préalable pour séparer ces nombres

Discussions similaires

  1. Formatter un texte String
    Par sal.gass dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 26/01/2009, 08h57
  2. Formatter une division de float en string
    Par stephane.julien dans le forum C#
    Réponses: 3
    Dernier message: 25/10/2007, 16h15
  3. [String]Formatter avec local
    Par EpOnYmE187 dans le forum Langage
    Réponses: 4
    Dernier message: 19/09/2005, 21h40
  4. URGENT: retour de string
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 15/07/2002, 09h47
  5. String Grid et choix d'une couleur pour une ligne
    Par Gigottine dans le forum C++Builder
    Réponses: 12
    Dernier message: 17/05/2002, 15h23

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