Aller au contenu

Problème d'expression régulière


Nocta

Sujets conseillés

Bonjour,

J'ai un soucis avec preg_match et cela fait un petit moment que j'essaie de me dépatouiller sans succès.

Je suis dans le cadre d'une administration ou il y a beaucoup de chiffres qui sont ammenés à être rentrés par les utilisateurs.

La majorité d'entre eux utilise le point pour séparer leurs nombres a virgules et d'autre utilisent la virgule.

Soit on peut trouver des 19.6 et des 19,6 pour la même valeur selon les utilisateurs.

En base (MySql), les collonnes sont de type Float et donc 19.6 est bien sauvegardé et 19,6 se transforme donc en 19.

Je me suis donc mis en tête de créer une petite fonction pour toutes mes pages qui transformerais le contenu du $_POST de cette façon :


foreach($_POST as $k=>$e) // Pour toutes les valeurs dans $_POST
if( 1 )
$_POST[$k] = floatval(str_replace(",",".",$e)); // On remplace la virgule par un point si il y a une virgule, et on transforme la variable en float

(1) = Si le valeur de $_POST[$k] est de la forme : [0-9]+ [,]{1} [0-9]+ OU de la forme simplement : [0-9]+

J'ai donc utilisé ce morceau de code qui me paraissait bon (mais malheureusement je suis mauvais en expression régulière) :


if(preg_match('/[0-9]*\,[0-9]*|[0-9]*/', $e))

Ce code ne fonctionne pas, et j'essaie sous toutes les formes sans y arriver.

Quelqu'un pourrait-il avoir la gentillesse de m'éclairer ?

D'avance un grand merci !

Modifié par Nocta
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...