Aller au contenu
Nocta

Problème d'expression régulière

Noter ce sujet :

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 !

Modifié par Nocta

Partager ce message


Lien à poster
Partager sur d’autres sites

Essaie plutôt :

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

Parfait !

Merci beaucoup ! Il ne manquait pas grand chose ^^

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×