P> 在下在开发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; ?> 诸位有什么好的意见,请与我联系([email protected])。 phpfans.net收集整理 |