PDA

View Full Version : 人民币数字转中文币制


Chilly
2016-06-10, 06:59 AM
[php]代码库








/**


* 人民币数字转中文币制


* @param string $data 待转换的数字


* @return string 返回转换后的中文数字


*/


function numberTocncap($data){


$capnum = array( "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" );


$capdigit = array( "", "拾", "佰", "仟" );


$subdata = explode( ".", $data );


$yuan = $subdata[0];


$j = 0;


$nonzero = 0;


for( $i=0; $i<strlen($subdata[0]); $i++ ){


if( $i==0 ){ //确定个位


if($subdata[1]){


$cncap = (substr($subdata[0],-1,1)!=0) ? "元" : "元零";


}else{


$cncap = "元";


}


}


if( $i==4 ){ //确定万位


$j = 0;


$nonzero = 0;


$cncap = "万" . $cncap;


}


if($i==8){ //确定亿位


$j = 0;


$nonzero = 0;


$cncap = "亿" . $cncap;


}


$numb = substr($yuan,-1,1); //截取尾数


$cncap = ($numb) ? $capnum[$numb].$capdigit[$j].$cncap : (($nonzero)?"零".$cncap:$cncap);


$nonzero = ($numb) ? 1 : $nonzero;


$yuan = substr($yuan,0,strlen($yuan)-1); //截去尾数


$j++;


}


if($subdata[1]){


$chiao=(substr($subdata[1],0,1))?$capnum[substr($subdata[1],0,1)]."角":"零";


$cent=(substr($subdata[1],1,1))?$capnum[substr($subdata[1],1,1)]."分":"零分";


}


$cncap .= $chiao.$cent."整";


$cncap = preg_replace("/(零)+/","\\1",$cncap); //合并连续“零”


return $cncap;


}