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 !
Le code ci-dessus m'affiche ceci :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
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>";
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.nombre original = 1234.56 - nombre formaté = 1 234,56
nombre original = 1 234,56 - nombre formaté = 1 234,56
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à...
Ce qui donne bien :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
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>
Si quelqu'un a meilleure une idée ?nombre original = 1 234,56 - nombre formaté = 1234.56
![]()
Partager