Jump to content
Sign in to follow this  
Nocta

Problème d'expression régulière

Rate this topic

Recommended Posts

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 !

Edited by Nocta

Share this post


Link to post
Share on other sites

Essaie plutôt :

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

Parfait !

Merci beaucoup ! Il ne manquait pas grand chose ^^

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...