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 :

Tronquer un nombre


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Points : 50
    Points
    50
    Par défaut Tronquer un nombre
    Salut à tous,
    voila j'ai une variable
    $num=999ANIP54230
    Je voudrais en créer une autre qui ne récupère que les 3 dernier chiffres
    comment dois-je écrire mon code
    $result=...
    Merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 109
    Points : 68
    Points
    68
    Par défaut
    Si ton $num à tjr le meme nombre de chiffre tu peux faire

    $num=999ANIP54230
    //a partir du 10eme chiffre, prendre les 3 suivants...
    $result= substr($num, 10, 3);

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Points : 50
    Points
    50
    Par défaut
    Non, mon $num n'a pas toujours le même nombre de chiffres
    il faudrait que le code lui indique de prendre les trois derniers chiffres quelque soit le nombre de chiffres

  4. #4
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Plus simple et plus générique :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $num="999ANIP54230";
    $result= substr($num, -3);

    Et ce serait encore mieux avec une regex, mais je dois aller manger

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Points : 50
    Points
    50
    Par défaut
    merci beaucoups @+

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Points : 50
    Points
    50
    Par défaut
    Salut à tous,
    J'ai petit problème,
    Je récupère bien ma variable avec les trois derniers chiffres, mais lorsque je ces trois chiffres sont par exemple 005, cela ne me ramène que 5
    ça ignore les zéros,
    comment puis-je faire?

  7. #7
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    La fonction substring renvoie une chaîne, qui doit alors contenir les zéros.
    Peut-être fais-tu ensuite une conversion plus ou moins implicite.

    Quoi qu'il en soit, number_format() pourra te remettre les zéros en place : http://fr.php.net/manual/fr/function.number-format.php
    number_format — Formate un nombre pour l'affichage

  8. #8
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Points : 50
    Points
    50
    Par défaut
    Merci mais je rame un peu
    j'écrit ça
    $num="999ANIP54230";
    $result= number_format($num, -3);

    Résultat: 999
    Mais je voudrais plutôt 230

  9. #9
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Toutes mes excuses, je me suis trompé sur ta demande : number_format est utile pour formater des réels, mais ce sont les zéros non significatifs qui t'intéressent.

    Cette solution pourrait te convenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $num="999ANIP54001";
    $num= substr($num, -3);
    $num = sprintf('%3s', $num);
    print $num;

  10. #10
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Points : 50
    Points
    50
    Par défaut
    c'est pas plutot
    print ($num);

    parceque ça buggue dur

  11. #11
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    print() n'est pas vraiment une fonction (c'est techniquement une structure de langage). Cela fait que vous n'êtes pas obligé d'utiliser des parenthèses.
    http://fr.php.net/manual/fr/function.print.php

    Si tu définissais "ça buggue dur", ce serait plus facile pour t'aider

  12. #12
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Points : 50
    Points
    50
    Par défaut
    pas eu trops le temps de voir les message d'erreur car test sur le site intranet en direct live ,
    donc obligé de remettre le code correctement
    j'ai juste vu apparaitre error on line.... surement la ligne concernée par par en supprimant juste celle là ça remarche
    j'ai donc actuellemnent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $num="999ANIP54001";
    $num= substr($num, -3);
    $num = sprintf('%3s', $num);
    et là ça donne 1 et non 001

  13. #13
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    J'utilise asse souvent print au lieu de echo par habitude, ainsi ça ne me change pas de perl et python.
    Mais pour revenir à une syntaxe phpesque (un caramel à celui qui le prononce ! ), je colle un code qui fonctionne chez moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $num="999ANIP54001";
    $num= substr($num, -3);
    $num = sprintf('%3s', $num);
    echo $num;
    Avec ça, j'obtiens vraiment 001.

    Pourrais-tu nous coller tout ton script ?

  14. #14
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
      $num = '999ANIP54001';
      $num = substr($num, -3);
      echo $num;
    ?>
    m'affiche '001'.

  15. #15
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Points : 50
    Points
    50
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
      $num = '999ANIP54001';
      $num = substr($num, -3);
     
    //et aprés, j'écris dans une cellule d'excel (avec spreadsheet)
     
    $Worksheet-->write(1 , 16 , "$num", $border1);
     
      ?>
    Cela ne proviendrait-il pas de l'écriture dans excel car le résultat à l'air OK

  16. #16
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par fthem Voir le message
    Cela ne proviendrait-il pas de l'écriture dans excel car le résultat à l'air OK
    Quel est le format de la cellule ? Car en standard, excel transforme les chaînes en nombres si possible.

    Je mets 20$ sur le problème excel.

  17. #17
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
      $num = '999ANIP54001';
      $num = '\'' . substr($num, -3);
      echo $num;
    ?>
    J'ai fait un copier-coller dans OpenOffice du résultat de ce code, soit '001, et il affiche les zéros, alors que le code précédent n'affiche que 1.

  18. #18
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Points : 50
    Points
    50
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
      $num = '999ANIP54001';
      $num = '\'' . substr($num, -3);
      echo $num;
    ?>
    Déja beaucoups mieux, mais là il me donne
    '001

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Quel est le format de la cellule ? Car en standard, excel transforme les chaînes en nombres si possible.
    Je mets 20$ sur le problème excel.
    Donc pas problème excel quoique ensuite j'ai un renvois de cette cellule vers une cellule d'une autre feuille (donc excel vers excel) et là le format de la cellule est important lequel faut-il mettre por recupérer la valeur entière (001)

  19. #19
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    OpenOffice affiche l'apostrophe dans la barre de formule, mais pas dans la cellule.

  20. #20
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Points : 50
    Points
    50
    Par défaut
    ah non, non, dans excel, l'apostrophe s'affiche dans la barre de formule, mais aussi dans la cellule.
    Mais ça me va comme ça, si toutefois vous avez la réponse pour supprimer l'apostrophe, je suis preneur
    merci à tous

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2007] Formule pour tronquer un nombre
    Par mohamed_3106 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/09/2012, 17h20
  2. Tronquer un nombre
    Par Najua dans le forum SAS Base
    Réponses: 2
    Dernier message: 01/07/2010, 15h34
  3. tronquer un nombre
    Par new_matlab dans le forum MATLAB
    Réponses: 3
    Dernier message: 26/06/2009, 01h30
  4. tronquer un nombre
    Par fthem dans le forum Excel
    Réponses: 2
    Dernier message: 24/11/2008, 13h08
  5. tronquer un nombre selon un nombre de decimale bien précis
    Par mystro7200 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/11/2008, 11h55

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