PHP中實現數字金額到中文大寫字符的轉換

在下在開發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)。

You May Also Like