Supprimer un caractère quand il est suivi d'une virgule

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Supprimer un caractère quand il est suivi d'une virgule

Re: Supprimer un caractère quand il est suivi d'une virgule

par Ripat » 20 avr. 2012, 22:54

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

Re: Supprimer un caractère quand il est suivi d'une virgule

par albat » 20 avr. 2012, 12:01

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

par Guen36 » 20 avr. 2012, 11:48

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

par Mazarini » 19 avr. 2012, 18:02

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

par albat » 19 avr. 2012, 17:35

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

par moogli » 19 avr. 2012, 17:33

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.

@+

Supprimer un caractère quand il est suivi d'une virgule

par Guen36 » 19 avr. 2012, 17:08

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.