首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

money_format

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

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

描述

代码语言:javascript
复制
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)。

%

返回字符。

代码语言:txt
复制
 `number`   

要格式化的数字。

返回值

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

注意

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

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

例子

示例#1 money_format()示例

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

代码语言:javascript
复制
<?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 →

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com