(PHP 4 >= 4.3.0, PHP 5, PHP 7)
money_format — Da formato a un número como un string de moneda
$format
, float $number
)
money_format() devuelve una versión de
number
con formato. Esta función se ajusta a la función
strfmon() de la librería de C, con la diferencia de que
esta aplicación convierte sólo un número a la vez.
format
La especificación del formato se compone de la siguiente secuencia:
un caracter %
indicadores opcionales
ancho de campo opcional
precisión a la izquierda opcional
precisión a la derecha opcional
un caracter de conversión obligatorio
Uno o más de los siguientes indicadores opcionales pueden ser utilizados:
El caracter = seguido de un caracter f (byte único) que se utilizará como el caracter de relleno numérico. El carácter de relleno por defecto es el espacio.
Deshabilita el uso de caracteres de agrupamiento (según la definición de la configuración regional actual).
Especifica el estilo de formato para los números positivos y negativos. Si se utiliza +, el equivalente de la configuración regional para + y - será usado. Si se utiliza (, las cantidades negativas serán encerradas entre paréntesis. Si no se da ninguna especificación, el valor por defecto es +.
Suprime el símbolo de moneda del string producido.
Si está presente, hará todos los campos justificados a la izquierda (con relleno a la derecha), contrario al valor por defecto que es para que los campos se justifiquen a la derecha (con relleno a la izquierda).
Un string de dígito decimal que especifica un ancho mínimo de campo. El campo será justificado a la derecha a menos que el indicador - sea utilizado. El valor por defecto es 0 (cero).
El número máximo de dígitos (n) que se espera a la izquierda del caracter decimal (por ejemplo, el punto decimal). Es utilizado generalmente para mantener la salida con formato alineada en las mismas columnas, usando el caracter de relleno si el número de dígitos sea menor que n. Si el número de dígitos real es mayor que n, entonces esta especificación es ignorada.
Si la agrupación no ha sido suprimida mediante el indicador ^, los separadores de agrupamiento serán insertados antes de que los caracteres de relleno (si los hay) sean agregados. Los separadores de agrupamiento no se aplicarán a los caracteres de relleno, aunque el carácter de relleno sea un dígito.
Para asegurar la alineación, cualquier caracter que aparezca antes o después del número en la salida con formato, tales como símbolos de moneda o de signo, son rellenados cuando sea necesario con caracteres de espacio para hacer sus formatos positivos y negativos de una longitud igual.
Un punto seguido por el número de dígitos (p) después del carácter decimal. Si el valor de p es 0 (cero), el carácter decimal y los dígitos a su derecha serán omitidos. Si no se incluye la precisión al la derecha, el valor por defecto será dictado por la configuración regional actual en uso. La cantidad que se está formateando se redondea al número especificado de dígitos antes de formatearla.
El número se formatea de acuerdo al formato internacional de moneda de la configuración regional (por ejemplo, para la configuración regional de EE.UU.: USD $ 1,234.56).
El número se formatea de acuerdo al formato nacional de moneda de la configuración regional (por ejemplo, para la configuración regional de_DE: EU1.234,56).
Devuelve el caracter %.
number
El número a ser formateado.
Devuelve el string con formato. Los caracteres antes y después del string
de formato se devolverán sin cambios.
Un number
no numérico causa que se devuelva NULL
y
se emite un E_WARNING
.
Nota:
La función money_format() sólo está definida si el sistema tiene capacidad strfmon. Por ejemplo, Windows no lo hace, así que money_format() no está definido en Windows.
Nota:
La categoría
LC_MONETARY
de la configuración regional, afecta el comportamiento de esta función. Utilizar setlocale() para establecer la configuración regional predeterminada apropiada antes de usar esta función.
Ejemplo #1 Ejemplos de money_format()
Se utilizan diferentes configuraciones regionales y especificaciones de formato para ilustrar el uso de esta función.
<?php
$number = 1234.56;
// muestra el formato internacional para la configuración regional en_US
setlocale(LC_MONETARY, 'en_US');
echo money_format('%i', $number) . "\n";
// USD 1,234.56
// formato nacional italiano con 2 decimales`
setlocale(LC_MONETARY, 'it_IT');
echo money_format('%.2n', $number) . "\n";
// Eu 1.234,56
// utilizando un número negativo
$number = -1234.5672;
// formato nacional US, utilizando () para los números negativos
// y 10 dígitos de precisión a la izquierda
setlocale(LC_MONETARY, 'en_US');
echo money_format('%(#10n', $number) . "\n";
// ($ 1,234.57)
// formato similar que el anterior, agregando el uso de 2 dígitos de precisión
// a la derecha y '*' como caracter de relleno
echo money_format('%=*(#10.2n', $number) . "\n";
// ($********1,234.57)
// justificado a la izquierda, con 14 posiciones de ancho, 8 dígitos de
// precisión a la izquierda, 2 de precisión a la derecha, sin caracter de agrupamiento
// y utilizando el formato internacional para la configuración regional de_DE.
setlocale(LC_MONETARY, 'de_DE');
echo money_format('%=*^-14#8.2i', 1234.56) . "\n";
// Eu 1234,56****
// añadir un poco de propaganda antes y después los especificación de conversión
setlocale(LC_MONETARY, 'en_GB');
$fmt = 'The final value is %i (after a 10%% discount)';
echo money_format($fmt, 1234.56) . "\n";
// The final value is GBP 1,234.56 (after a 10% discount)
?>