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 :

[Tableaux] Extraire les chiffres dans une chaîne


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 19
    Points : 12
    Points
    12
    Par défaut [Tableaux] Extraire les chiffres dans une chaîne
    Bonjour à tous,

    d'habitude, un p'tit tous sur le forum ou les tutos et je trouve,mais là, je trouve pas, donc question !!!

    J'ai une chaine de caractères composée aléatoirement de chiffres et de lettres, du style : S7F35R9SR05NVNP2X5ZSWV4GTQGN4

    je voudrais extraire les chiffres au milieu de tout ça pour les additionner ensemble : 7+3+5+9+0+5+2+5+4+4 = 44 (ça c'est pas le plus dure).

    Bien sûr, le qantité de chiffres contenu dans la chaine n'est pas fixe, il peut y en avoir 10 comme dnas l'exemple, comme il peut y en avoir 0 (très rare) ou 25.

  2. #2
    Membre averti Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Points : 341
    Points
    341
    Par défaut
    Bonjour,
    ce que tu peux faire c'est parcourir la chaine caractère par caractère, à chaque fois que c'est un chiffre tu l'additionne aux précédents, par contre, si tu as deux chiffres à suivre, tu les considères comme un seul nombre ou deux chiffres distincts ?


    tu peux essayer quelquechose comme ça :
    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
    19
    20
    21
     
    <?php
    $somme=0;
    $chaine='OJHAEF79835NDS9F834KNSF98';
    $longueur=strlen($chaine);
    $i=0;
    //création d'un tableau qui contient un caractère de la chaine par case
    while($i<$longueur)
    {
    	$tab[$i]=substr($chaine,$i,1);
    	$i++;
    }
    $i=0;
    //test de ce tableau, chaque case qui contient un chiffre voit sa valeur ajoutée à la variable $somme
    while($i<$longueur)
    {
    	if($tab[$i]>=0 && $tab[$i]<=9) // je ne suis pas sure que ça fonctionne comme ça, je n'ai pas testé
                       $somme=$somme+$tab[$i];
    	$i++;
    }
    ?>

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Merci, je vais décortiquer pour comprendre (j'aime bien comprendre et ne pas appliquer bêtement)

    Je cite :
    par contre, si tu as deux chiffres à suivre, tu les considères comme un seul nombre ou deux chiffres distincts ?

    Réponse : comme 2 chiffres bien distincts !!! c'est déjà assez compliqué comme ça. déjà que pour arriver à cette clé à tester par les chiffres, j'ai déjà dû appliquer 8 opérations depuis son arrivée sur la page web.

    Le but est de certifier que la variable reçue d'une appli contient une clé correcte. Une fois qu'elle est certifée, faut encore quelle se trouve dans la BDD pour accéder à la page suivante !!!

  4. #4
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Lors d'une addition, php attribue la valeur 0 à un chiffre qu'il ne
    commprend pas (une lettre par exemple).

    la somme des chiffres équivaut à la somme de chaque caractère,
    donc tu peux simplifier ainsi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?
    $s = 0;
    $a = "S7F35R9SR05NVNP2X5ZSWV4GTQGN4";
    for($i=0;$i<strlen($a);$i++) $s += $a[$i];
    echo "Somme $s";
    ?>

  5. #5
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    Exact, mais ça s'écrit pas plutôt

    ?

  6. #6
    Membre averti Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Points : 341
    Points
    341
    Par défaut
    Citation Envoyé par marcha
    Salut,

    Lors d'une addition, php attribue la valeur 0 à un chiffre qu'il ne
    commprend pas (une lettre par exemple).

    la somme des chiffres équivaut à la somme de chaque caractère,
    donc tu peux simplifier ainsi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?
    $s = 0;
    $a = "S7F35R9SR05NVNP2X5ZSWV4GTQGN4";
    for($i=0;$i<strlen($a);$i++) $s += $a[$i];
    echo "Somme $s";
    ?>
    Je ne savais pas, merci pour l'info

  7. #7
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Citation Envoyé par wamania
    Exact, mais ça s'écrit pas plutôt

    ?
    Arg, oui, je viens de le découvrir :-) merci

    La notation avec les crochets fonctionne pour des raisons de compatibilité
    mais les accolades sont désormais recommandées.

    Qqn sait si les crochets sont toujours utilisables en php5 ?

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    ARRGGHHH !!!

    Bon sang, c'est encore plus simple que je le pensais !!!

    Je vais gagner un temps fou. Merci à tous !!!

    Y'a pas à dire, je vais continuer de recommander ce forum à tout les dev en herbe comme moi !!!

    Pour les accolades, j'ai lu sur un site, y'a 2 jours, que c'était plus rapide pour le traitement, mais que dans l'avenir, elles re-disparaitront au profit des bon vieux crochets !!!

    Voilà, j'ai retrouvé et c/c :
    Mais d'après les notes sur le futur de php (www.php.net/~derick/meeti... apparemment c'est la syntaxe avec accolade qui va disparaitre et on utilisera donc les crochets à la fois pour les tableaux et les chaînes de caractères. les accolades sont dépréciées en php 5.1.0 et disparaitrons complètement en php 6.


    EDIT : je viens de tester, tout marche, encore merci ... comme quoi faut pas chercher compliqué !!

  9. #9
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    Bah tiens, j'en apprend aussi tous les jours.
    Les accolades dépréciées...
    Bon bah, retour aux crochets

    Merci pour l'info en tout cas.

    EDIT : je viens de tester, tout marche, encore merci ... comme quoi faut pas chercher compliqué !!
    Petit tag [résolu] ?

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

Discussions similaires

  1. Multiplier les chiffres dans une chaîne de caractères
    Par mimihh dans le forum Débuter avec Java
    Réponses: 14
    Dernier message: 26/09/2013, 15h42
  2. supprimer les espaces dans une chaîne de caratères.
    Par Empty_body dans le forum Langage
    Réponses: 2
    Dernier message: 12/09/2006, 18h43
  3. [MySQL] extraire les chiffres d'une chaine
    Par megane dans le forum Langage SQL
    Réponses: 4
    Dernier message: 23/08/2006, 14h29
  4. Remplacer les accents dans une chaîne
    Par mathieumg dans le forum C
    Réponses: 9
    Dernier message: 23/07/2006, 15h39
  5. [RegEx] Trouver tous les "/mot" dans une chaîne
    Par micatmidog dans le forum Langage
    Réponses: 7
    Dernier message: 31/03/2006, 12h07

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