Page 1 sur 1
Supprimer un caractère quand il est suivi d'une virgule
Posté : 19 avr. 2012, 17:08
par Guen36
Bonjour,
Je cherche à supprimer les 0 qui figure seul devant une virgule tel que :
0,75 devient ,75
ou 10,50 reste ainsi.
Je sais que je dois utiliser les fonctions str_replace et strpos mais je ne sais pas comment les associer.
Merci d'avance.
Re: Supprimer un caractère quand il est suivi d'une virgule
Posté : 19 avr. 2012, 17:33
par moogli
Salut,
Faut voir la chaîne en générale.
S'il y a un espace devant tu peux faire un truc du genre str_replace(' 0,',',', $tachaine);
Sinon avec strpos et substr pas str_replace.
<?php
$pos = strpos($tachaine,'0,');
if($pos !== false && $pos == 0){
$tachaine = substr($tachaine, 1, strlen($tachaine)-1);
}
?>
Sinon pourquoi pas avec
http://fr2.php.net/manual/fr/function.strpbrk.php suivant ce que tu veux et ce que tu a exactement comme chaîne.
@+
Re: Supprimer un caractère quand il est suivi d'une virgule
Posté : 19 avr. 2012, 17:35
par albat
Re: Supprimer un caractère quand il est suivi d'une virgule
Posté : 19 avr. 2012, 18:02
par Mazarini
while (substr($chaine,0,1) == "0") $chaine = substr($chaine,1);
Mais je préfère :
- remplacement virgule par point
- formatage du nombre
- remplacement du point par la virgule
Re: Supprimer un caractère quand il est suivi d'une virgule
Posté : 20 avr. 2012, 11:48
par Guen36
Finalement j'ai utilisé ce contrôle :
if(preg_match('([0-9]+[0]+\,)', $b)){
$r = $b;
}else{
$r = str_replace('0,',',',$b);
}
echo $r;
Merci à tous pour votre aide.
J'ai voulu marquer ce sujet comme résolu mais je ne trouve pas la petite icone avec la flèche verte est-ce que c'est parce qu'il s'agissait de mon premier message ? Merci
Re: Supprimer un caractère quand il est suivi d'une virgule
Posté : 20 avr. 2012, 12:01
par albat
J'ai voulu marquer ce sujet comme résolu mais je ne trouve pas la petite icone avec la flèche verte
est-ce que c'est parce qu'il s'agissait de mon premier message ? Merci
Non, c'est juste parce que cette fonctionnalité n'a pas été rétablie depuis le dernier upgrade.

Re: Supprimer un caractère quand il est suivi d'une virgule
Posté : 20 avr. 2012, 22:54
par Ripat
Bonsoir à tous,
C'est possible en utilisant une assertion arrière négative (negative lookbehind)
preg_replace('#(?<![0-9])0,#', ',', $var)
(?<![0-9]) veut dire, si on ne trouve pas de chiffre devant le zéro, on fait le replace.
Ou, plus simplement en utilisant l'assertion simple \b qui marque une limite de mot:
preg_replace('#\b0,#', ',', $texte)
Théorie:
http://www.lumadis.be/regex/tuto_pcre.php#look
http://www.lumadis.be/regex/tuto_pcre.php#asser
Test du motif:
http://lumadis.be/regex/test_regex.php?id=1149