= 4.3.0, PHP 5, PHP 7)money_format — 將數(shù)字格式化成貨幣字符串說(shuō)明money_format(string $format, float $number): stringmoney_format() 返回格式化好的 numbe">

money_format

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

money_format將數(shù)字格式化成貨幣字符串

說(shuō)明

money_format(string $format, float $number): string

money_format() 返回格式化好的 number 版本。 此函數(shù)包裝了 C 函數(shù)庫(kù)中的 strfmon(),不同之處是:此實(shí)現(xiàn)每次只能轉(zhuǎn)化一個(gè)數(shù)字。

參數(shù)

format

格式字符串由以下幾部分組成:

  • 單個(gè) % 字符

  • 可選的標(biāo)記(flags)

  • 可選的字段寬度

  • 可選的,左側(cè)精度

  • 可選的,右側(cè)精度

  • 必選的,單個(gè)轉(zhuǎn)化字符

標(biāo)記(Flags)

可選多個(gè)標(biāo)記,分別是:

=f

字符:=,并緊跟一個(gè)字符(單字節(jié)) f,用于數(shù)字填充。默認(rèn)的填充字符是空格。

^

禁用分組字符(比如金額中的逗號(hào)。在本地區(qū)域設(shè)置 locale 中定義)。

+ or (

正負(fù)數(shù)字的格式。使用 +,將使用區(qū)域設(shè)置(locale)中相當(dāng)于 +- 的符號(hào)。 如果使用 (,負(fù)數(shù)將被圓括號(hào)圍繞。不設(shè)置的話,默認(rèn)為 +。

!

不輸出貨幣符號(hào)(比如 ¥)。

-

有這個(gè)符號(hào)的時(shí)候,將使字段左對(duì)齊(填充到右邊),默認(rèn)是相反的,是右對(duì)齊的(填充到左邊)。

字段寬度

w

十進(jìn)制數(shù)值字符串的寬度。字段將右對(duì)齊,除非使用了 - 標(biāo)記。默認(rèn)值 0。

左側(cè)精度

#n

小數(shù)字符(比如小數(shù)點(diǎn))前的最大位數(shù) (n)。 常用于同一列中的格式對(duì)齊。 如果位數(shù)小于 n 則使用填充字符填滿。 如果實(shí)際位數(shù)大于 n,此設(shè)置將被忽略。

如果沒(méi)用 ^ 標(biāo)識(shí)禁用分組,分組分隔符會(huì)在添加填充字符之前插入(如果有的話)。 分組分隔符不會(huì)應(yīng)用到填充字符里,哪怕填充字符是個(gè)數(shù)字。

為了保證對(duì)齊,出現(xiàn)在之前或者之后的字符,都會(huì)填充必要的空格,保證正負(fù)情況下長(zhǎng)度都一樣。

右側(cè)精度

.p

小數(shù)點(diǎn)后的一段數(shù)字 (p)。 如果 p 的值是 0(零),小數(shù)點(diǎn)右側(cè)的數(shù)值將被刪除。 如果不使用這個(gè)標(biāo)記,默認(rèn)展現(xiàn)取決于當(dāng)前的區(qū)域設(shè)置。 小數(shù)點(diǎn)后指定位數(shù)的數(shù)字,四舍五入格式化。

轉(zhuǎn)化字符

i

根據(jù)國(guó)際化區(qū)域設(shè)置中的貨幣格式,格式化數(shù)值。(比如,locale 是 USA:USD 1,234.56)。

n

根據(jù)國(guó)際化區(qū)域設(shè)置中國(guó)家的貨幣格式,格式化數(shù)值。(比如,locale 是 de_DE:EU1.234,56)。

%

返回字符 %。

number

需要格式化的數(shù)字。

返回值

返回格式化后的字符。格式字符串前后的字符將原封不動(dòng)返回。 傳入的 number 如果不是數(shù)字,將返回 null 并且產(chǎn)生 E_WARNING。

注釋

注意:

具有 strfmon 的系統(tǒng)才有 money_format() 函數(shù)。 例如 Windows 不具備,所以 Windows 系統(tǒng)上 money_format() 未定義。

注意:

locale 設(shè)置中, LC_MONETARY 會(huì)影響此函數(shù)的行為。 在使用函數(shù)前,首先要用 setlocale() 來(lái)設(shè)置合適的區(qū)域設(shè)置(locale)。

范例

示例 #1 money_format() 例子

使用不同的 locale 和格式字符串,來(lái)說(shuō)明此函數(shù)的用法。

<?php

$number 
1234.56;

// 讓我們打印 en_US locale 的國(guó)際化格式
setlocale(LC_MONETARY'en_US');
echo 
money_format('%i'$number) . "\n";
// USD 1,234.56

// 意大利國(guó)家的格式,帶兩位浮點(diǎn)小數(shù)`
setlocale(LC_MONETARY'it_IT');
echo 
money_format('%.2n'$number) . "\n";
// Eu 1.234,56

// 負(fù)數(shù)的使用
$number = -1234.5672;

// 美國(guó)國(guó)家的格式,使用圓括號(hào) () 標(biāo)記負(fù)數(shù)。
// 左側(cè)精度使用十位
setlocale(LC_MONETARY'en_US');
echo 
money_format('%(#10n'$number) . "\n";
// ($        1,234.57)

// 相似的格式,添加了右側(cè)兩位小數(shù)點(diǎn)的精度,同時(shí)用 * 來(lái)填充
echo money_format('%=*(#10.2n'$number) . "\n";
// ($********1,234.57)

// 讓我們左對(duì)齊,14位寬,左側(cè)八位,右側(cè)兩位,不帶分組字符
// de_DE 的國(guó)際化格式
setlocale(LC_MONETARY'de_DE');
echo 
money_format('%=*^-14#8.2i'1234.56) . "\n";
// Eu 1234,56****

// 讓我們?cè)诟袷阶址昂?,添加一些?jiǎn)介
setlocale(LC_MONETARY'en_GB');
$fmt 'The final value is %i (after a 10%% discount)';
echo 
money_format($fmt1234.56) . "\n";
// The final value is  GBP 1,234.56 (after a 10% discount)

?>

參見(jiàn)