Posez votre question Signaler

[PHP] Regex [Résolu]

Mich - Dernière réponse le 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 !
Lire la suite 

[PHP] Regex »

10 réponses
Réponse
+0
moins plus
Ben sinon tu remplaces les espace+0 par espace, et les .+0 par des .
pas très propre mais bon ...
XD
Mich - 30 juil. 2009 à 11:17
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...
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

Utilise un test avant plutôt.

Ajouter un commentaire
Réponse
+0
moins plus
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);
?>

Mich - 30 juil. 2009 à 11:20
Ouhla, ici j'ai un beau warning sur touets mes lignes : Warning: ereg_replace() [function.ereg-replace]: REG_BADRPT lol
Ajouter un commentaire
Réponse
+0
moins plus
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/javascript/testeur-expressions-reguliere s/
- JS : http://www.toutjavascript.com/service/regexp.php

Bonne chance,
Mich - 30 juil. 2009 à 11:25
Merci, ton dernier lien est sympa, (les 2 autres ne fonctionnent plus), mais je galère quand même !
Ajouter un commentaire
Réponse
+0
moins plus
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"




Ajouter un commentaire
Réponse
+0
moins plus
correction des liens :
- http://www.switchplane.com/utilities/preg_match-regular-expression-tester.php
- http://quentinc.net/javascript/testeur-expressions-regulieres/

normalement ça devrait marché !
Ajouter un commentaire
Réponse
+0
moins plus
@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 !
Ajouter un commentaire
Ce document intitulé « [PHP] Regex » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?