(PHP 4 >= 4.3.0, PHP 5, PHP 7)
money_format — Formattazione di un numero come stringa monetaria
money_format() restituisce una versione formattata di
number
. Questa funzione è un'interfaccia alla funzione C
strfmon(), con la differenza che questa funzione
converte un solo numero alla volta.
Nota:
La funzione money_format() esiste solo se il sistema suppporta strfmon. Ad esempio, Windows non lo supporta perciò la funzione money_format() non è definita su Windows.
LA specifica del formato consiste nella seguente sequenza:
un carattere %
un flag opzionale flags
la lunghezza del campo, opzionale
la precisione a sinistra, opzionale
la precisione a destra, opzionale
un carattere di conversione, obbligatorio
Si possono utilizzare uno o più dei seguenti flag:
=
f
Il carattere =
seguito da un singolo carattere (singolo byte)
f è utilizzato come carattere di riempimento numerico.
Il carattere di default è lo spazio.
^
Disabilita l'utilizzo del raggruppamento dei caratetrei (come definito nelle impostazioni locali).
+
oppure (
Specifica lo stile di formattazione per i numeri positivi e negativi.
Se si utilizza +
, sarà utilizzato l'equivalente valore locale per
+
e -
. Se si utilizza
(
, i valori negativi saranno racchiusi tra
parentesi. Se non si da specifica, il default è
+
.
!
Sopprime il simbolo della moneta nella stringa di output.
-
Se presente, rende tutti i campi giustificati a sinistra (riempiti a a destra), il default prevede i campi allineati a destra (riempiti a sinistra).
Una stringa numerica che specifica la lunghezza minima del campo. Il campo sarà
allineato a destra a meno di non avere impostato il flag -
.
Il valore di default è 0 (zero).
#
nSono attesi un numero massimo di (n) numeri a sinistra del carattere decimale (es. il punto decimale). Solitamente si utilizza per mantenere allineato l'output nella medesima colonna, utilizzando il carattere di riempimento, se il numero delle cifre è inferiore a n. Se il numero delle cifre è superiore a n, questa specifica viene ignorata.
Se il raggruppamento delle cifre non è soppresso tramite ^
,
saranno inseriti i separatori di raggruppamento prima dei caratteri
di riempimento (se presenti). I separatori di gruppo non saranno applicati
ai caratteri di riempimento, anche se il carattere di riempimento è un numero.
Per garantire l'allineamento, ogni carattere che, nella stringa formattata, appare prima o dopo il numero, tipo il simbolo della moneta o il segno, viene riempito con gli spazi necessari affinché la corrispondente stringa risultante da un valore positivo o negativo abbia la medesima lunghezza.
.
pUn punto seguito da un numero di cifre (p) dopo il carattere decimale. Se il valore di p è 0 (zero), il carattere decimale e le cifre alla sua destra saranno omesse. Se non vi è indicazione della precisione a destra, il default sarà preso della impostazioni locali. L'importo sarà arrontondato alle cifre decimali richieste prima di essere formattato.
i
Il numero sarà formattato in base alle impostazioni internazionali locali (es. le impostazioni locali USA: USD 1,234.56).
n
Il numero sarà formattato in base alle locali impostazioni nazionali di moneta (es. per de_DE: DM1.234,56).
%
Restituisce il carattere %
.
Nota:
La categoria
LC_MONETARY
delle impostazioni locali influisce sul comportamento di questa funzione. Utilizzare setlocale() per impostare il default appropriato prima di utilizzare questa funzione.I caratteri prima e dopo la stringa di formattazione saranno restituiti immutati.
Example #1 Esempio di uso di money_format()
Per illustrare il funzionamento della funzione utilizzeremo diversi formati di impostazioni locali.
<?php
$number = 1234.56;
// stampa nel formato internazionale per l'impostazione en_US
setlocale(LC_MONETARY, 'en_US');
echo money_format('%i', $number) . "\n";
// USD 1,234.56
// Fromato italiano con 2 cifre decimali`
setlocale(LC_MONETARY, 'it_IT');
echo money_format('%.2n', $number) . "\n";
// L. 1.234,56
// Numeri negativi
$number = -1234.5672;
// Formato nazionale US, Utilizzo di () per i numeri negativi
// e 10 cifre di precisione a sinistra
setlocale(LC_MONETARY, 'en_US');
echo money_format('%(#10n', $number) . "\n";
// ($ 1,234.57)
// Simile al precente con 2 cifre di precisione a destra
// e '*' come carattere di riempimento
echo money_format('%=*(#10.2n', $number) . "\n";
// ($********1,234.57)
// Giustificazione a sinistra, con 14 posizioni di lunghezza, 8 cifre di
// precisione a sinistra, 2 di precisione a destra, senza carattere di raggruppamento
// e utilizzando l'impostazione locale de_DE.
setlocale(LC_MONETARY, 'de_DE');
echo money_format('%=*^-14#8.2i', 1234.56) . "\n";
// DEM 1234,56****
// Qualche carattere prima e dopo la specifica di formattazione
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)
?>
Vedere anche setlocale(), number_format(),sprintf(), printf() e sscanf().