(PHP 4 >= 4.3.0, PHP 5, PHP 7)
money_format — 將數字格式化成貨幣字符串
$format
, float $number
): string
money_format() 返回格式化好的
number
版本。
此函數包裝了 C 函數庫中的 strfmon(),不同之處是:此實(shí)現每次只能轉化一個(gè)數字。
format
格式字符串由以下幾部分組成:
單個(gè) %
字符
可選的標記(flags)
可選的字段寬度
可選的,左側精度
可選的,右側精度
必選的,單個(gè)轉化字符
可選多個(gè)標記,分別是:
=
f
字符:=
,并緊跟一個(gè)字符(單字節) f,用于數字填充。默認的填充字符是空格。
^
禁用分組字符(比如金額中的逗號。在本地區域設置 locale 中定義)。
+
or (
正負數字的格式。使用 +
,將使用區域設置(locale)中相當于 +
和 -
的符號。
如果使用 (
,負數將被圓括號圍繞。不設置的話(huà),默認為
+
。
!
不輸出貨幣符號(比如 ¥)。
-
有這個(gè)符號的時(shí)候,將使字段左對齊(填充到右邊),默認是相反的,是右對齊的(填充到左邊)。
十進(jìn)制數值字符串的寬度。字段將右對齊,除非使用了 -
標記。默認值 0。
#
n小數字符(比如小數點(diǎn))前的最大位數 (n)。 常用于同一列中的格式對齊。 如果位數小于 n 則使用填充字符填滿(mǎn)。 如果實(shí)際位數大于 n,此設置將被忽略。
如果沒(méi)用 ^
標識禁用分組,分組分隔符會(huì )在添加填充字符之前插入(如果有的話(huà))。
分組分隔符不會(huì )應用到填充字符里,哪怕填充字符是個(gè)數字。
為了保證對齊,出現在之前或者之后的字符,都會(huì )填充必要的空格,保證正負情況下長(cháng)度都一樣。
.
p小數點(diǎn)后的一段數字 (p)。 如果 p 的值是 0(零),小數點(diǎn)右側的數值將被刪除。 如果不使用這個(gè)標記,默認展現取決于當前的區域設置。 小數點(diǎn)后指定位數的數字,四舍五入格式化。
i
根據國際化區域設置中的貨幣格式,格式化數值。(比如,locale 是 USA:USD 1,234.56)。
n
根據國際化區域設置中國家的貨幣格式,格式化數值。(比如,locale 是 de_DE:EU1.234,56)。
%
返回字符 %
。
number
需要格式化的數字。
返回格式化后的字符。格式字符串前后的字符將原封不動(dòng)返回。
傳入的 number
如果不是數字,將返回 null
并且產(chǎn)生
E_WARNING
。
注意:
具有 strfmon 的系統才有 money_format() 函數。 例如 Windows 不具備,所以 Windows 系統上 money_format() 未定義。
注意:
locale 設置中,
LC_MONETARY
會(huì )影響此函數的行為。 在使用函數前,首先要用 setlocale() 來(lái)設置合適的區域設置(locale)。
示例 #1 money_format() 例子
使用不同的 locale 和格式字符串,來(lái)說(shuō)明此函數的用法。
<?php
$number = 1234.56;
// 讓我們打印 en_US locale 的國際化格式
setlocale(LC_MONETARY, 'en_US');
echo money_format('%i', $number) . "\n";
// USD 1,234.56
// 意大利國家的格式,帶兩位浮點(diǎn)小數`
setlocale(LC_MONETARY, 'it_IT');
echo money_format('%.2n', $number) . "\n";
// Eu 1.234,56
// 負數的使用
$number = -1234.5672;
// 美國國家的格式,使用圓括號 () 標記負數。
// 左側精度使用十位
setlocale(LC_MONETARY, 'en_US');
echo money_format('%(#10n', $number) . "\n";
// ($ 1,234.57)
// 相似的格式,添加了右側兩位小數點(diǎn)的精度,同時(shí)用 * 來(lái)填充
echo money_format('%=*(#10.2n', $number) . "\n";
// ($********1,234.57)
// 讓我們左對齊,14位寬,左側八位,右側兩位,不帶分組字符
// de_DE 的國際化格式
setlocale(LC_MONETARY, 'de_DE');
echo money_format('%=*^-14#8.2i', 1234.56) . "\n";
// Eu 1234,56****
// 讓我們在格式字符串前后,添加一些簡(jiǎ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)
?>