2012-08-09 7 views
0

Je crée un site où les utilisateurs doivent entrer plusieurs nombres.
numéros Theese doivent être validés (pour des caractères illégaux, etc.) et convertis au format:Conversion de nombre en PHP

1234.56 

Mon problème est de savoir comment puis-je convertir (en raison des différentes notations de pays) les différentes combinaisons de décimales/mille -delimiters:

1234,56/1.234,56/1234.56/1,234.56 

le résultat attendu devrait toujours être: 1234.56

+1

* comment * Définir l'utilisateur doit entrer les chiffres, au moins ce que le séparateur décimal est. – deceze

+0

Pouvez-vous supposer qu'il y aura toujours deux décimales? .. ou qu'il y aura toujours des décimales? – MatsLindh

+0

Malheureusement, je ne peux rien supposer. C'est un champ d'entrée sans validation côté client, donc l'utilisateur pourrait (par erreur) entrer une clé dans les caractères alpha, dans le cas où ma fonction validaion devrait renvoyer une erreur. Donc je dois faire tout le côté serveur de validation – user1586912

Répondre

1

Si vous avez toujours 2 décimales (comme pour les prix environ), vous pouvez simplement prendre le dernier point ou une virgule, diviser la chaîne d'entrée à cette position et supprimer tous les caractères non numériques (, et. dans votre cas) de la première partie.

Si vous ne pouvez pas garantir d'avoir deux décimales, vous devez vous méfier en vérifiant s'il y a 3 nombres après le dernier séparateur (pour décider s'il y a des décimales).

Depuis apparemment vous avez besoin pour soutenir un ensemble plus large de pays, une solution générique pourrait être le meilleur choix. Peut-être y a-t-il du Javascript, qui résout le problème aussi (convertit les nombres avant de soumettre un formulaire).