zl程序教程

您现在的位置是:首页 >  其它

当前栏目

一个阿拉伯数字转中文数字的函数

函数 一个 阿拉伯数字 中文数字
2023-06-13 09:13:43 时间

最近因需要,写了个“阿拉伯数字转中文数字的函数”。搜索了精华区只见到一个类似的。
感觉到我的算法不错,所以贴出来共享一下如果要用于金额的转换,对小数部分的处理要做一下修改
<?php
functionch_num($num,$mode=true){
 $char=array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
 $dw=array("","拾","佰","仟","","?","?|","兆");
 $dec="?";
 $retval="";

 if($mode)
   preg_match_all("/^0*(\d*)\.?(\d*)/",$num,$ar);
 else
   preg_match_all("/(\d*)\.?(\d*)/",$num,$ar);

 if($ar[2][0]!="")
   $retval=$dec.ch_num($ar[2][0],false);//如果有小数,先递归处理小数
 if($ar[1][0]!=""){
   $str=strrev($ar[1][0]);
   for($i=0;$i<strlen($str);$i++){
     $out[$i]=$char[$str[$i]];
     if($mode){
       $out[$i].=$str[$i]!="0"?$dw[$i%4]:"";
       if($str[$i]+$str[$i-1]==0)
         $out[$i]="";
       if($i%4==0)
         $out[$i].=$dw[4+floor($i/4)];
     }
   }
   $retval=join("",array_reverse($out)).$retval;
 }
 return$retval;
}

//echoch_num("12345006789001.123");
//echoch_num("880079.1234");
echoch_num("300045.0123");

?>