Conversion de nombres avec LocalizedToNormalized
Bonjour à tous,
Je rencontre un problème de conversion de formats de nombres avec les filtres ZF. Convertir un nombre au format "informatique" (1234.56) dans le format français (1 234,56) ne pose pas de problème. L'inverse par contre ne marche pas si on utilise l'espace comme séparateur de milliers. Donc 1 234,56 ne sera pas converti, mais 1234,56 sera bien converti en 1234.56 !
Code:
1 2 3 4 5 6
| $filter = new Zend_Filter_NormalizedToLocalized();
$nombre = "1234.56";
echo "<p>nombre original = $nombre - nombre formaté = " . $filter->filter($nombre) . "</p>";
$filter = new Zend_Filter_LocalizedToNormalized();
$nombre = "1 234,56";
echo "<p>nombre original = $nombre - nombre formaté = " . $filter->filter($nombre) . "</p>"; |
Le code ci-dessus m'affiche ceci :
Citation:
nombre original = 1234.56 - nombre formaté = 1 234,56
nombre original = 1 234,56 - nombre formaté = 1 234,56
J'ai essayé en précisant la locale explicitement (avec 'fr', 'fr_FR', rien n'y fait), en essayant de préciser le format de nombre... rien ne marche.
La seule solution que j'ai trouvé est de virer les espaces à la main avec str_replace, mais c'est moche d'en arriver là...
Code:
1 2 3
| $filter = new Zend_Filter_LocalizedToNormalized();
$nombre = "1 234,56";
echo "<p>nombre original = $nombre - nombre formaté = " . $filter->filter(str_replace(' ', '', $nombre)) . "</p> |
Ce qui donne bien :
Citation:
nombre original = 1 234,56 - nombre formaté = 1234.56
Si quelqu'un a meilleure une idée ? :)
:merci: