10000php换人民币,转 数字转大写人民币

/*

PHP版阿拉伯数字RMB转化大写人民币 BY厕所的灯 AT 2005-03-24

因为小数点后最多只有2位,所以我没有用递归,直接一个数一个数取的,整数位用的是递归计算的,感觉精华也是在此,呵呵

详看注释

*/

$string_num = array();//中文大写数字

$string_cn1 = array();//中文单位

$string_cn2 = array();//中文单位

$moneyString= ''; //最后的中文结果

$string_num[0]= '零';

$string_num[1]= '壹';

$string_num[2]= '贰';

$string_num[3]= '叁';

$string_num[4]= '肆';

$string_num[5]= '伍';

$string_num[6]= '陆';

$string_num[7]= '柒';

$string_num[8]= '捌';

$string_num[9]= '玖';

$string_cn1[2]= '拾';

$string_cn1[3]= '佰';

$string_cn1[4]= '仟';

$string_cn2[1]= '角';

$string_cn2[2]= '分';

function getMoneyString($num)

{

global $string_num, $string_cn1, $string_cn2, $moneyString;

if (!eregi("^[0-9]+[\.]?[0-9]{0,2}$",$num))

return '初始错误,数值非法';

$tmp= explode('.', $num); //把小数和整数分别来计算

$num1= $tmp[0];

$num2= $tmp[1];

/*

处理整数部分

把整数分为三中情况,1:亿以上的;2:万以上的;3:万以下的

分别为第9(亿),第5(万)位

*/

if ($num1 > 0)

{

getAll($num1, '圆'); //如果整数部分不为0 最后单位为圆

}

else

{

$moneyString = '零圆';

}

//处理小数

if (intval($num2) == 0)

$moneyString.= '整'; //整数处理完毕,如果小数不存在 则加个‘整’字

else

{

//小数这里我是直接一个数一个数取的

if ($num2{0} == 0)

{

//十分位为0的情况

$moneyString .= '零' . $string_num[$num2{1}] . $string_cn2[2];

}

elseif ($num2{1} == 0)

{

//百分位为0的情况

$moneyString .= $string_num[$num2{0}] . $string_cn2[1] . '整';

}

else

{

//都不为0的情况

$moneyString .= $string_num[$num2{0}] . $string_cn2[1] . $string_num[$num2{1}] . $string_cn2[2];

}

}

return $moneyString;

}

function getAll($num , $dw) //$num 为数值 $dw为单位

{

global $string_num, $string_cn1, $string_cn2, $moneyString;

$numlen = strlen($num);

if ($num < 10000)

{

if ($num == 0)

$moneyString .= $dw;

else

$moneyString .= getPart($num) . $dw;

}

elseif ($num < 100000000)

{

$moneyString .= getAll(substr(strval($num), 0, ($numlen - 4)), '万') . getAll(substr(strval($num), ($numlen - 4)), $dw);

}

else

{

//亿是最大单位,如果超过亿,则把亿以上部分数字当成一部分进行读取

$moneyString .= getAll(substr(strval($num), 0, ($numlen - 8)), '亿') . getAll(substr(strval($num), ($numlen - 8)), $dw);

}

}

//0-9999数字的读取

function getPart($num)

{

global $string_num, $string_cn1, $string_cn2, $moneyString;

$is_zero= false; //判断是否有连续零的标记

$numlen = strlen($num);

$str = '';

$x = 0;

for ($i = $numlen; $i > 0; $i--)

{

$t = $num{$x};

if (intval(substr($num ,$x)) == 0)

{

//如果从当前$x位置出到最后为连续0则留空

$str.= '';

}

elseif (!$is_zero && $t == 0)

{

//第一次出现0则。。。

$str.= '零';

$is_zero = true;

}

elseif ($is_zero && $t == 0)

{

//连续出现则留空

$str.= '';

}

else

{

$str.= $string_num[$t] . $string_cn1[$i];

$is_zero = false;

}

$x++;

}

return $str;

}

//演示

$num = "100600000";

echo $num . "
";

echo getMoneyString($num) . "


";

$moneyString = '';

$num = "20000000000000000000000";

echo $num . "
";

echo getMoneyString($num) . "


";

$moneyString = '';

$num = "120.54";

echo $num . "
";

echo getMoneyString($num) . "


";

$moneyString = '';

$num = "31010.50";

echo $num . "
";

echo getMoneyString($num) . "


";

if($_POST)

{

$moneyString = '';

$num = $_POST['num'];

echo "您输入的是" . $num . "
";

echo "返回结果:".getMoneyString($num) . "


";

}

echo "

数字  ";

?>

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值