(PHP 4 >= 4.3.0, PHP 5)
money_format — Formattazione di un numero come stringa monetaria
$format
, float $number
)
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:
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).
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).
Sono 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.
Un 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.
Il numero sarà formattato in base alle impostazioni internazionali locali (es. le impostazioni locali USA: USD 1,234.56).
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().