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
Décompose les étapes :
  • combien de chiffres y a t il à gauche de la virgule ?
    • aucun :arrow: Fin
    • un
    • plusieurs :arrow: Fin
  • ce chiffre est-il un 0 ?
    • oui :arrow: suppression de l'affichage du 0
    • non :arrow: Fin

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. :P

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