php 把数字转换成汉字的代码
直接上实例,写到千亿上了。
/** *@authorja颂 *把数字1-1亿换成汉字表述,如:123->一百二十三 *@param[num]$num[数字] *@return[string][string] */ functionnumToWord($num) { $chiNum=array('零','一','二','三','四','五','六','七','八','九'); $chiUni=array('','十','百','千','万','亿','十','百','千'); $chiStr=''; $num_str=(string)$num; $count=strlen($num_str); $last_flag=true;//上一个是否为0 $zero_flag=true;//是否第一个 $temp_num=null;//临时数字 $chiStr='';//拼接结果 if($count==2){//两位数 $temp_num=$num_str[0]; $chiStr=$temp_num==1?$chiUni[1]:$chiNum[$temp_num].$chiUni[1]; $temp_num=$num_str[1]; $chiStr.=$temp_num==0?'':$chiNum[$temp_num]; }elseif($count>2){ $index=0; for($i=$count-1;$i>=0;$i--){ $temp_num=$num_str[$i]; if($temp_num==0){ if(!$zero_flag&&!$last_flag){ $chiStr=$chiNum[$temp_num].$chiStr; $last_flag=true; } }else{ $chiStr=$chiNum[$temp_num].$chiUni[$index%9].$chiStr; $zero_flag=false; $last_flag=false; } $index++; } }else{ $chiStr=$chiNum[$num_str[0]]; } return$chiStr; } $num=150; echonumToWord($num);
方法二:
<?php /** *数字转换为中文 *@param string|integer|float $num 目标数字 *@param integer$mode模式[true:金额(默认),false:普通数字表示] *@param boolean$sim使用小写(默认) *@returnstring */ functionnumber2chinese($num,$mode=true,$sim=true){ if(!is_numeric($num))return'含有非数字非小数点字符!'; $char =$sim?array('零','一','二','三','四','五','六','七','八','九') :array('零','壹','贰','叁','肆','伍','陆','柒','捌','玖'); $unit =$sim?array('','十','百','千','','万','亿','兆') :array('','拾','佰','仟','','萬','億','兆'); $retval =$mode?'元':'点'; //小数部分 if(strpos($num,'.')){ list($num,$dec)=explode('.',$num); $dec=strval(round($dec,2)); if($mode){ $retval.="{$char[$dec['0']]}角{$char[$dec['1']]}分"; }else{ for($i=0,$c=strlen($dec);$i<$c;$i++){ $retval.=$char[$dec[$i]]; } } } //整数部分 $str=$mode?strrev(intval($num)):strrev($num); for($i=0,$c=strlen($str);$i<$c;$i++){ $out[$i]=$char[$str[$i]]; if($mode){ $out[$i].=$str[$i]!='0'?$unit[$i%4]:''; if($i>1and$str[$i]+$str[$i-1]==0){ $out[$i]=''; } if($i%4==0){ $out[$i].=$unit[4+floor($i/4)]; } } } $retval=join('',array_reverse($out)).$retval; return$retval; } //实例调用===================================================== $num='0123648867.789'; echo$num,'<br>'; //普通数字的汉字表示 echo'普通:',number2chinese($num,false),''; echo'<br>'; //金额汉字表示 echo'金额(简体):',number2chinese($num,true),''; echo'<br>'; echo'金额(繁体):',number2chinese($num,true,false);
以上所述就是本文的全部内容了,希望大家能够喜欢。