2011-02-09 36 views
6

He establecido la configuración regional usando la función setlocale() para decir "en_US".php cómo obtener el separador decimal/mil actual para una localidad determinada

Ahora estoy tratando de dar formato a la moneda sin un separador de miles como esto:

$ = moneda Number_format ('' valor de $, 2, , '');

que funciona, pero a veces tengo otras monedas y quiero que number_format use el separador decimal correcto según el uso de la configuración regional.

¿Hay alguna manera de obtener el separador decimal actual de alguna manera, según la configuración regional que se haya establecido?

+0

try ['string money_format (string $ format, float $ number)'] (http://php.net/money_format). – Jacco

Respuesta

9

localeconv() debería hacerlo. Desde el manual:

Devuelve una matriz asociativa contiene numérico localizada y información de formato monetaria.

Here is a list de cadenas de idioma reconocidos por setlocale() en Windows.

+0

gracias, por desgracia, que devuelve elementos de matriz vacíos: [miles_sep] => [int_curr_symbol] => [currency_symbol] => [mon_decimal_point] => – Jorre

+0

tiene algo que ver con Windows. Todo funciona bien en mi Mac/Linux, pero estaba buscando una solución para obtener las monedas formateadas de manera consistente en todas nuestras máquinas de desarrollo de Windows. Oh bien. ¡Gracias por la respuesta! – Jorre

0

Sean Bright tiene razón, usa la función localeconv(). ¿Estás seguro de que estableces una configuración regional correcta para tu sistema operativo, porque el sistema operativo basado en Unix usa la notación similar "en_US.UTF-8", mientras que Windows usa "en-US".

+1

Si tiene un sistema operativo diferente en su computadora desarrollador y servidor de producto, entonces puede llamar a 'setlocale' de esta manera:' setlocale (LC_ALL, 'en_US.utf8', 'en-US') '. La función usará la primera configuración local encontrada. – WASD42

+0

gracias, suena como una solución, pero aún así, la matriz permanece vacía en las ventanas incluso con estas configuraciones regionales alternativas – Jorre

+0

Intente utilizar configuraciones regionales desde [manual de MSDN] (http://msdn.microsoft.com/en-us/library/39cwe7zf % 28vs.71% 29.aspx). 'setlocale (LC_ALL, 'en_US.utf8', 'american')' funciona perfectamente tanto en mi XP como en Vista, devolviendo una matriz llena con el nombre y el símbolo de la moneda y los separadores numéricos. – WASD42

1

No es el mejor, pero funciona:

$locale_info = localeconv(); 
echo 'decimal_point=', $locale_info['decimal_point'], '<br/>/n'; 

localeconv() devuelve una matriz asociativa con otros campos además del carácter del punto decimal.

Cuestiones relacionadas