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 →