php 阿拉伯数字转中文数字方法

<?php 
function ch_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; 
} 
//echo ch_num("12345006789001.123"); 
//echo ch_num("880079.1234"); 
echo ch_num("300045.0123"); 

//这个方法更为优秀一些.

 function toCNcap($data){
   $capnum=array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
   $capdigit=array("","拾","佰","仟");
   $subdata=explode(".",$data);
   $yuan=$subdata[0];
   $j=0; $nonzero=0;
   for($i=0;$i<strlen($subdata[0]);$i++){
      if(0==$i){ //确定个位 
         if($subdata[1]){ 
            $cncap=(substr($subdata[0],-1,1)!=0)?"元":"元零";
         }else{
            $cncap="元";
         }
      }   
      if(4==$i){ $j=0;  $nonzero=0; $cncap="万".$cncap; } //确定万位
      if(8==$i){ $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;
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值