php中money用什么显示,在PHP中将Money转换为文本

这是一个开始.这是我后来写的一个递归函数(解决

Project Euler problem 17的一部分)将数字转换为字母……它可以处理一些相当大的数字;)

您需要做的就是添加美元和美分组件并根据需要进行修改.所以基本上你必须为美元金额调用一次函数,对美分组件调用一次.我不认为这有一个原生的PHP功能.您必须使用库(如Pear)函数.

function translateToWords($number)

{

/*****

* A recursive function to turn digits into words

* Numbers must be integers from -999,999,999,999 to 999,999,999,999 inclussive.

*

* (C) 2010 Peter Ajtai

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

*

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

*

* See the GNU General Public License: .

*

*/

// zero is a special case, it cause problems even with typecasting if we don't deal with it here

$max_size = pow(10,18);

if (!$number) return "zero";

if (is_int($number) && $number < abs($max_size))

{

switch ($number)

{

// set up some rules for converting digits to words

case $number < 0:

$prefix = "negative";

$suffix = translateToWords(-1*$number);

$string = $prefix . " " . $suffix;

break;

case 1:

$string = "one";

break;

case 2:

$string = "two";

break;

case 3:

$string = "three";

break;

case 4:

$string = "four";

break;

case 5:

$string = "five";

break;

case 6:

$string = "six";

break;

case 7:

$string = "seven";

break;

case 8:

$string = "eight";

break;

case 9:

$string = "nine";

break;

case 10:

$string = "ten";

break;

case 11:

$string = "eleven";

break;

case 12:

$string = "twelve";

break;

case 13:

$string = "thirteen";

break;

// fourteen handled later

case 15:

$string = "fifteen";

break;

case $number < 20:

$string = translateToWords($number%10);

// eighteen only has one "t"

if ($number == 18)

{

$suffix = "een";

} else

{

$suffix = "teen";

}

$string .= $suffix;

break;

case 20:

$string = "twenty";

break;

case 30:

$string = "thirty";

break;

case 40:

$string = "forty";

break;

case 50:

$string = "fifty";

break;

case 60:

$string = "sixty";

break;

case 70:

$string = "seventy";

break;

case 80:

$string = "eighty";

break;

case 90:

$string = "ninety";

break;

case $number < 100:

$prefix = translateToWords($number-$number%10);

$suffix = translateToWords($number%10);

$string = $prefix . "-" . $suffix;

break;

// handles all number 100 to 999

case $number < pow(10,3):

// floor return a float not an integer

$prefix = translateToWords(intval(floor($number/pow(10,2)))) . " hundred";

if ($number%pow(10,2)) $suffix = " and " . translateToWords($number%pow(10,2));

$string = $prefix . $suffix;

break;

case $number < pow(10,6):

// floor return a float not an integer

$prefix = translateToWords(intval(floor($number/pow(10,3)))) . " thousand";

if ($number%pow(10,3)) $suffix = translateToWords($number%pow(10,3));

$string = $prefix . " " . $suffix;

break;

case $number < pow(10,9):

// floor return a float not an integer

$prefix = translateToWords(intval(floor($number/pow(10,6)))) . " million";

if ($number%pow(10,6)) $suffix = translateToWords($number%pow(10,6));

$string = $prefix . " " . $suffix;

break;

case $number < pow(10,12):

// floor return a float not an integer

$prefix = translateToWords(intval(floor($number/pow(10,9)))) . " billion";

if ($number%pow(10,9)) $suffix = translateToWords($number%pow(10,9));

$string = $prefix . " " . $suffix;

break;

case $number < pow(10,15):

// floor return a float not an integer

$prefix = translateToWords(intval(floor($number/pow(10,12)))) . " trillion";

if ($number%pow(10,12)) $suffix = translateToWords($number%pow(10,12));

$string = $prefix . " " . $suffix;

break;

// Be careful not to pass default formatted numbers in the quadrillions+ into this function

// Default formatting is float and causes errors

case $number < pow(10,18):

// floor return a float not an integer

$prefix = translateToWords(intval(floor($number/pow(10,15)))) . " quadrillion";

if ($number%pow(10,15)) $suffix = translateToWords($number%pow(10,15));

$string = $prefix . " " . $suffix;

break;

}

} else

{

echo "ERROR with - $number
Number must be an integer between -" . number_format($max_size, 0, ".", ",") . " and " . number_format($max_size, 0, ".", ",") . " exclussive.";

}

return $string;

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值