PHP中实现数字金额到中文大写字符的转换

王朝php·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

在下在开发PHP应用程序的过程中,经常遇到把数字金额转换为大写中文字符的任务。本以为网上一定有编好的PHP函数。但找来找去,都没有找到。 无奈,只好自己动手了。现在就把它拿出来与诸位分享吧。希望能从此改变 “找来找去”都找不到的历史。

<?

function num2rmb ($num){ file://把数字金额转换成中文大写数字的函数

$c1="零壹贰叁肆伍陆柒捌玖";

$c2="分角元拾佰仟万拾佰仟亿";

$num=round($num,2);

$num=$num*100;

if(strlen($num)>10){

return "oh,sorry,the number is too long!";

}

$i=0;

$c="";

while (1){

if($i==0){

$n=substr($num,strlen($num)-1,1);

}else{

$n=$num %10;

}

$p1=substr($c1,2*$n,2);

$p2=substr($c2,2*$i,2);

if($n!='0' || ($n=='0' &&($p2=='亿' || $p2=='万' || $p2=='元' ))){

$c=$p1.$p2.$c;

}else{

$c=$p1.$c;

}

$i=$i+1;

$num=$num/10;

$num=(int)$num;

if($num==0){

break;

}

}//end of while| here, we got a chinese string with some useless character

f//we chop out the useless characters to form the correct output

$j = 0;

$slen=strlen($c);

while ($j< $slen) {

$m = substr($c,$j,4);

if ($m=='零元' || $m=='零万' || $m=='零亿' || $m=='零零'){

$left=substr($c,0,$j);

$right=substr($c,$j+2);

$c = $left.$right;

$j = $j-2;

$slen = $slen-2;

}

$j=$j+2;

}

if(substr($c,strlen($c)-2,2)=='零'){

$c=substr($c,0,strlen($c)-2);

} // if there is a '0' on the end , chop it out

return $c."整";

}// end of function

?>

<?

$out=num2rmb(1001.4570);

echo $out;

?>

诸位有什么好的意见,请与我联系(cyman20@sina.com)。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航