[PHP] Regex

Résolu
Mich -  
 Mich -
Bonjour,

J'ai une suite de chiffres comme ceux-ci : 01.02.01.20, 02.03.15, 02.05.10, 01.10 ...
J'aimerais quelque soit la longueur de ma chaine pouvoir supprimer les 0 qui se trouvent avant un chiffre, ce qui donnerait : 1.2.1.20, 2.3.15, 2.5.10, 1.10

J'ai essayé les choses choses suivantes :
$replace = '\\2';
$monRegex = "[0][1-9]*.[0][1-9]*.[0][1-9]*";
$sMenu = eregi_replace($monRegex, $replace ,$sMenu0);
et :
$sMenu = eregi("[1-9][1-9]*.[1-9][1-9]*.[1-9][1-9]*.[1-9][1-9]*", $replace ,$sMenu0);

Mais lorsque je fais echo $Menu; rien ne fonctionne, svp j'ai besoin d'aide !
Configuration: Windows XP
Firefox 3.0.12

7 réponses

  1. jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
     
    Ben sinon tu remplaces les espace+0 par espace, et les .+0 par des .
    pas très propre mais bon ...
    XD
    0
    1. Mich
       
      Le problème c'est que mon str_replace ne fonctionne pas pour les premiers 0 de mes chaines :

      $sMenu0="02.01.10";
      $sMenu = str_replace(".0",".",$sMenu0);
      $sMenu = str_replace(" 0"," ",$sMenu);
      Ca me sort : 02.1.10 au lieu de 2.1.10.
      Je vois pas comment faire du coup...
      0
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Utilise un test avant plutôt.

    0
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    Je n'ai pas testé
    <?php
      $chaine="01.02.01.20, 02.03.15, 02.05.10, 01.10"
      echo ereg_replace("0(?=[1-9])","",$chaine);
    ?>

    0
    1. Mich
       
      Ouhla, ici j'ai un beau warning sur touets mes lignes : Warning: ereg_replace() [function.ereg-replace]: REG_BADRPT lol
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Voilà je viens de tester sur http://www.solmetra.com/scripts/regex/index.php avec preg_replace

    <?php
      $chaine="01.02.01.20, 02.03.15, 02.05.10, 01.10"
      echo preg_replace('/0(?=[1-9])/', '', $chaine);
    ?>

    Peut être c'est "$chaine" ou '$chaine'

    P.S Ca marche ;-)
    Le résultat est

    Function called:
    preg_replace('/0(?=[1-9])/', '', '01.02.01.20, 02.03.15, 02.05.10, 01.10'); 
    
    Function returned:
    string(32) "1.2.1.20, 2.3.15, 2.5.10, 1.10"


    0
  6. Mich
     
    @Lami20j : merci ça marche du tonnerre ! Super depuis le temps que j'étais la dessus :)
    @Thamior : merci pour les liens il vont m'être bien utiles à l'avenir !
    0