Php regex tres simple, garder que les chiffre

Résolu
Bonjour,
je souhaite ne garder que les chiffres d'une variable et enlever le reste
car je commence tout juste le web

par exemple j'ai ceci

$variable = lalala12345;

et je veux juste les chiffres

$variable = 12345;

comment faire ?

nb : dans $variable il n'y a rien apres (ex : lalala12345lalala) mais juste avant (ex : lalala12345)
Configuration: Windows XP
Firefox 3.0.1

3 réponses

  1. $chaine=ereg_replace("[^0-9]","",$chaine);

    marche aussi bien
    1. Parfait ;)
    2. la fonction ereg est depréciée
    3. la fonction ereg est depréciée et remplacer par la fonction preg_replace

      $chaine=preg_replace("/[^0-9]/","",$chaine); 
  2. Bonsoir,

    Voici un code qui fonctionne, il existe peut être plus simple.

    <?php

    $message = "abc5897";
    $carac = 0;
    $taille = strlen($message);

    if (preg_match("/[0-9]/i", $message)) { // On test si la chaine contient des chiffres
    while ($carac <= $taille-1) { // tant qu'il y a des caractères
    $Chaine = $message{$carac}; // on prend caractère par caractère
    if((ord($Chaine) <= ord("9")) && (ord($Chaine) >= ord("0")) ){ // si le caractere est un chiffre
    $chiffre .= $Chaine;
    }
    //$debut = $debut + 1;
    //$fin = $fin + 1;
    $carac++;
    }
    echo $chiffre;

    }
    ?>

    Bonne soirée.
    1. Bonsoir,

      je ne suis pas un pro de programmation ou de php ;)

      Mais je peux juste te donner une idée de principe (Cependant il doit certainement y avoir plus optimal et plus simple) :

      =============
      La synthaxe du code est complètement fausse c'est juste pour l'idée
      =============

      // Ta variable de base
      $variable = lalala12345;

      // Une variable temporaire en dehors de la boucle (Je sais pas si il y a besoin)
      $var;

      // Une boucle qui te permettra de tester chaque caractère de
      // ta chaine pour savoir si c'est numérique ou non.
      for (i=0; i<(strlen($variable)-1);i++) {

      // Permet de sélectionner quel caractère tu va tester avec le i de la boucle
      $j=$i++;

      // Chaque tour de boucle tu va tester le caractère suivant
      $str=substr($variable, $i, $j );

      // Si le caractère est de type entier
      if (is_int($str)){

      // Tu l'ajoutes aux autres
      $var=$var+$str;
      }
      // Ensuite tu testes le caractère suivant
      }

      Navré, de ne pouvoir te donner le code exact mais c'est comme sa que je vois les choses.

      Tiradus