solo - number_format php
Imprimir formato de nĂºmero de moneda en PHP (5)
Construí esta pequeña función para formatear automáticamente cualquier cosa en un buen formato de moneda.
function formatDollars($dollars)
{
return "$".number_format(sprintf(''%0.2f'', preg_replace("/[^0-9.]/", "", $dollars)),2);
}
Editar
Se señaló que esto no muestra valores negativos. Lo dividí en dos líneas para que sea más fácil editar el formato. Envuélvalo entre paréntesis si es un valor negativo:
function formatDollars($dollars)
{
$formatted = "$" . number_format(sprintf(''%0.2f'', preg_replace("/[^0-9.]/", "", $dollars)), 2);
return $dollars < 0 ? "({$formatted})" : "{$formatted}";
}
Tengo algunos valores de precio para mostrar en mi página.
Estoy escribiendo una función que toma el precio de flotación y devuelve el valor de moneda formateado con el código de moneda también.
Por ejemplo, fnPrice(1001.01)
debería imprimir $ 1,000.01
La respuesta más fácil es number_format()
.
echo "$ ".number_format($value, 2);
Si desea que su aplicación pueda trabajar con varias monedas y con formato compatible con la configuración regional ( 1.000,00
para algunos de nosotros, los europeos, por ejemplo), se vuelve un poco más complejo.
Hay money_format()
pero no funciona en Windows y se basa en setlocale()
, que es basura en mi opinión, porque requiere la instalación de paquetes de configuración regional (denominados arbitrariamente) en el lado del servidor.
Si desea internacionalizar seriamente su aplicación, considere utilizar una biblioteca de internacionalización en toda regla, como Zend_Locale y Zend_Currency Zend Framework.
PHP tiene una función llamada money_format
para hacer esto. Lea sobre esto here .
con la extensión intl en PHP 5.3+, puede usar la clase NumberFormatter :
$amount = ''12345.67'';
$formatter = new NumberFormatter(''en_GB'', NumberFormatter::CURRENCY);
echo ''UK: '', $formatter->formatCurrency($amount, ''EUR''), PHP_EOL;
$formatter = new NumberFormatter(''de_DE'', NumberFormatter::CURRENCY);
echo ''DE: '', $formatter->formatCurrency($amount, ''EUR''), PHP_EOL;
que imprime:
UK: €12,345.67
DE: 12.345,67 €
sprintf () es la función de PHP para todo tipo de formateo de cadenas http://php.net/manual/en/function.sprintf.php
Yo uso esta función:
function formatDollars($dollars){
return ''$ ''.sprintf(''%0.2f'', $dollars);
}