[PHP] Regex

Résolu
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. @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
    1. Modérateur
      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
      1. Modérateur
        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. Ouhla, ici j'ai un beau warning sur touets mes lignes : Warning: ereg_replace() [function.ereg-replace]: REG_BADRPT lol
          0
      2. Modérateur
        Salut,

        Utilise un test avant plutôt.

        0
        1. Ben sinon tu remplaces les espace+0 par espace, et les .+0 par des .
          pas très propre mais bon ...
          XD
          0
          1. 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