[PHP] Regex

Résolu/Fermé
Mich - 30 juil. 2009 à 10:59
 Mich - 30 juil. 2009 à 11:40
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 !
A voir également:

7 réponses

jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 185
30 juil. 2009 à 11:06
Ben sinon tu remplaces les espace+0 par espace, et les .+0 par des .
pas très propre mais bon ...
XD
0
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
30 juil. 2009 à 11:07
Salut,

Utilise un test avant plutôt.

0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
30 juil. 2009 à 11:12
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
Ouhla, ici j'ai un beau warning sur touets mes lignes : Warning: ereg_replace() [function.ereg-replace]: REG_BADRPT lol
0
Thamior Messages postés 264 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 18 mars 2014 47
30 juil. 2009 à 11:21
Bonjour,

Je te propose quelques sites qui pourront t'aider :
- PHP : [http://www.switchplane.com/utilities/preg_match-regular-expression-tester.php
- JS : http://quentinc.net/testeur-expressions-regulieres s/
- JS : https://www.toutjavascript.com/service/regexp.php

Bonne chance,
0
Merci, ton dernier lien est sympa, (les 2 autres ne fonctionnent plus), mais je galère quand même !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
30 juil. 2009 à 11:32
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
Thamior Messages postés 264 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 18 mars 2014 47
30 juil. 2009 à 11:33
correction des liens :
- http://www.switchplane.com/utilities/preg_match-regular-expression-tester.php
- http://quentinc.net/testeur-expressions-regulieres

normalement ça devrait marché !
0
@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