PHP

money_format

money_format

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

money_format - 将数字格式化为货币字符串

描述

string money_format ( string $format , float $number )

money_format()返回数字的格式化版本。 此函数包装C库函数strfmon(),区别在于此实现一次只转换一个数字。

参数

format

格式规范由以下顺序组成:

  • a % character

  • 可选标志

  • 可选字段宽度

  • 可选的左精度

  • 可选的右精度

  • 一个必需的转换字符

Flags

可以使用下面的一个或多个可选标志:

_=_f

字符=后跟一个(单字节)字符f用作数字填充字符。默认的填充字符是空格。

^

禁止使用分组字符(由当前语言环境定义)。

+ or (

指定正数和负数的格式样式。如果+被使用,语言环境的等效+-将被使用。如果使用),则括号中包含负数。如果未给出说明,则默认值为+

!

从输出字符串中取消货币符号。

-

如果存在,它将使所有字段左对齐(向右填充),而不是默认字段右对齐(填充到左侧)。

Field width

w

指定最小字段宽度的十进制数字字符串。除非标志字段将是右对齐-使用。默认值是0(零)。

Left precision

_#_n

预期在小数点左侧的最大位数(n)(例如小数点)。它通常用于保持格式化输出在同一列中对齐,如果数字位数小于n,则使用填充字符。如果实际数字的数量大于n,则忽略该规格。

如果使用^标志未阻止分组,则在添加填充字符(如果有)之前插入分组分隔符。即使填充字符是数字,分组分隔符也不会应用于填充字符。

为确保对齐,在格式化输出中的数字之前或之后出现的任何字符(例如货币或符号符号)都会根据需要用空格字符填充以使其正面和负面格式的长度相等。

Right precision

_._p

一个句点,后面跟着小数点后面的数字(p)。如果p的值为0(零),则将省略小数字符及其右侧的数字。如果不包括正确的精确度,默认值将由当前使用的本地决定。在格式化之前,格式化的数量四舍五入为指定的位数。

Conversion characters

i

该号码根据区域的国际货币格式进行格式化(例如美国区域设置:1,234.56美元)。

n

数字根据区域的国家货币格式进行格式化(例如de_DE区域:EU1.234,56)。

%

返回字符。

`number`

要格式化的数字。

返回值

返回格式化的字符串。 格式化字符串之前和之后的字符将不会被返回。 非数字数字会导致返回NULL并发出E_WARNING。

注意

注意:函数money_format()仅在系统具有strfmon功能时才被定义。例如,Windows没有,所以money_format()在Windows中未定义。

LC_MONETARY语言环境设置的类别影响此功能的行为。在使用此函数之前,请使用setlocale()将其设置为适当的默认语言环境。

例子

示例#1 money_format()示例

我们将使用不同的区域设置和格式说明来说明此功能的用法。

<?php $number = 1234.56; // let's print the international format for the en_US locale setlocale(LC_MONETARY, 'en_US' echo money_format('%i', $number) . "\n"; // USD 1,234.56 // Italian national format with 2 decimals` setlocale(LC_MONETARY, 'it_IT' echo money_format('%.2n', $number) . "\n"; // Eu 1.234,56 // Using a negative number $number = -1234.5672; // US national format, using () for negative numbers // and 10 digits for left precision setlocale(LC_MONETARY, 'en_US' echo money_format('%(#10n', $number) . "\n"; // ($        1,234.57) // Similar format as above, adding the use of 2 digits of right // precision and '*' as a fill character echo money_format('%=*(#10.2n', $number) . "\n"; // ($********1,234.57) // Let's justify to the left, with 14 positions of width, 8 digits of // left precision, 2 of right precision, withouth grouping character // and using the international format for the de_DE locale. setlocale(LC_MONETARY, 'de_DE' echo money_format('%=*^-14#8.2i', 1234.56) . "\n"; // Eu 1234,56**** // Let's add some blurb before and after the conversion specification 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) ?>

扩展内容

  • setlocale() - 设置区域设置信息

  • sscanf() - 根据格式解析字符串的输入

  • sprintf() - 返回格式化的字符串

  • printf() - 输出格式化的字符串

  • number_format() - 用分组数千格式化数字

← metaphone

nl_langinfo →