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

2018-09-07 14:20

阅读:369

  最近因需要,写了个“阿拉伯数字转中文数字的函数”。搜索了精华区只见到一个类似的。
感觉到我的算法不错,所以贴出来共享一下如果要用于金额的转换,对小数部分的处理要做一下修改
<?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);

  ?>


评论


亲,登录后才可以留言!