OVH Cloud OVH Cloud

Presenter nombre a la francaise

3 réponses
Avatar
Olivier Masson
Bonjour,

pour passer d'un nombre comme 1234567890.00 à 1 234 567 890,99 , je fais :

$nb = number_format($nb, 2, ',', ' ');
preg_replace('[\s]',' ',$nb);

ce qui me paraît fort peu joli. N'y a-t-il pas mieux ? Merci.

3 réponses

Avatar
Olivier Miakinen

pour passer d'un nombre comme 1234567890.00 à 1 234 567 890,99 , je fais :

$nb = number_format($nb, 2, ',', ' ');
preg_replace('[s]',' ',$nb);

ce qui me paraît fort peu joli. N'y a-t-il pas mieux ? Merci.


Si ta page est en ISO-8859-1 (ou ISO-8859-X quel que soit X), tu peux
tout simplement mettre une espace insécable directement à la place de
l'espace simple. Si ton éditeur ne te permet pas d'écrire une espace
insécable, ceci peut faire l'affaire :
$nb = number_format($nb, 2, ',', "xa0");

Mais si tu es en utf-8, comme seul le premier caractère de thousands_sep
est utilisé, tu ne peux faire la conversion qu'après le number_format :
$nb = utf8_encode(number_format($nb, 2, ',', "xa0"));

Note que c'est d'ailleurs équivalent à :
preg_replace("xa0", "xc2xa0", number_format($nb, 2, ',', "xa0"));
(et du coup je me demande si tu gagnes beaucoup à faire comme ça).

Avatar
Vincent Lascaux
$nb = number_format($nb, 2, ',', ' ');
preg_replace('[s]',' ',$nb);


Je comprends pas la raison pour laquelle tu fais pas
$nb = number_format($nb, 2, ',', '&nbsp');

--
Vincent

Avatar
Olivier Masson

Je comprends pas la raison pour laquelle tu fais pas
$nb = number_format($nb, 2, ',', '&nbsp');



Parce que ça ne prend que le premier caractère de &nbsp, soit &.

La soluce d'Olivier fonctionne très bien et puisque je suis en latin-1,
ça simplifie l'écriture. Merci.