在论坛里看到了一位网友问如何将小写货币转化为大写RMB,我试着写了一个,拿出来和大家讨论一下,目前此函数只能处理千亿以下的数据,另外没有进行参数合法验证,我会进一步完善的,还请各位朋友多提宝贵意见,谢谢!
<?php
function moneytochinese($money)
{
$unit=array("","拾","佰","千","角","分");
$num=array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
$submoney=explode(".",$money);
$submoney_int=explode(",",$submoney[0]);
$submoney_int=join("",$submoney_int);
$submoney_ints=$submoney_int;
for($i=0;$i<ceil(strlen($submoney_int)/4);$i++)
{
$submoney_int_vol[$i]=substr($submoney_ints,-4);
$submoney_ints=substr($submoney_int,0,strlen($submoney_int)-($i+1)*4);
}
$moneychinese="";
for($i=count($submoney_int_vol)-1;$i>=0;$i--)
{
switch($i)
{
case 0:
$units="";
break;
case 1:
$units="万";
break;
case 2:
$units="亿";
break;
}
for($j=0;$j<strlen($submoney_int_vol[$i]);$j++)
{
$nums=substr($submoney_int_vol[$i],$j,1);
$moneychinese.=$num[$nums].$unit[strlen($submoney_int_vol[$i])-1-$j];
}
$moneychinese.=$units;
}
$moneychinese.="圆";
for($i=0;$i<2;$i++)
{
$moneychinese.=$num[substr($submoney[1],$i,1)].$unit[$i+4];
}
$moneychinese.="整";;
return($moneychinese);
}
echo "121,121,122.12";
echo moneytochinese("121,121,122.12");
?>
|