Nocta Posté 12 Novembre 2012 Posté 12 Novembre 2012 (modifié) 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 $_POSTif( 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é 12 Novembre 2012 par Nocta
Ernestine Posté 12 Novembre 2012 Posté 12 Novembre 2012 Essaie plutôt : if(preg_match('/^([0-9]+\,[0-9]*|[0-9]+)$/', $e))
Nocta Posté 12 Novembre 2012 Auteur Posté 12 Novembre 2012 Essaie plutôt : if(preg_match('/^([0-9]+\,[0-9]*|[0-9]+)$/', $e)) Parfait ! Merci beaucoup ! Il ne manquait pas grand chose
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant