• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php数字金额转换成中文大写金额的函数

php 搞代码 3年前 (2022-01-22) 28次浏览 已收录 0个评论

本篇文章主要介绍php数字金额转换成中文大写金额的函数,感兴趣的朋友参考下,希望对大家有所帮助。

php将金额数字转化为中文大写

echo toChineseNumber(1234567890);//壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾圆function toChineseNumber($money){  $money = round($money,2);  $cnynums = array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");   $cnyunits = array("圆","角","分");  $cnygrees = array("拾","佰","仟","万","拾","佰","仟","亿");   list($int,$dec) = explode(".",$money,2);  $dec = array_filter(array($dec[1],$dec[0]));   $ret = array_merge($dec,array(implode("",cnyMapUnit(str_split($int),$cnygrees)),""));   $ret = implode("",array_reverse(cnyMapUnit($ret,$cnyunits)));   return str_replace(array_keys($cnynums),$cnynums,$ret); }function cnyMapUnit($list,$units) {   $ul=count($units);   $xs=array();   foreach (array_reverse($list) as $x) {     $l=count($xs);     if ($x!="0" || !($l%4))       $n=($x=='0'?'':$x).($units[($l-1)%$ul]);     else $n=is_numeric($xs[0][0])?$x:'';  array_unshift($xs,$n);  }  return $xs;  }

代码二:

/***数字金额转换成中文大写金额的函数*String Int $num 要转换的小写数字或小写字符串*return 大写字母*小数位为两位**/function num_to_rmb($num){    $c1 = "零壹贰叁肆伍陆柒捌玖";    $c2 = "分角元拾佰仟万拾佰仟亿";    //精确到分后面就不要了,所以只留两个小数位    $num = round($num, 2);     //将数字转化为整数    $num = $num * 100;    if (strlen($num) > 10) {        return "金额太大,请检查";    }     $i = 0;    $c = "";    while (1) {        if ($i == 0) {            //获取最后一位数字            $n = substr($num, strlen($num)-1, 1);        } else {            $n = $num % 10;        }        //每次将最后一位数字转化为中文        $p1 = substr($c1, 3 * $n, 3);        $p2 = substr($c2, 3 * $i, 3);        if ($n != '0' || ($n == '0' && ($p2 == '亿' || $p2 == '万' || $p2 == '元'))) {            $c = $p1 . $p2 . $c;        } else {            $c = $p1 . $c;        }        $i = $i + 1;        //去掉数字最后一位了        $num = $num / 10;        $num = (int)$num;        //结束循环        if ($num == 0) {            break;        }     }    $j = 0;    $slen = strlen($c);    while ($j < $slen) {        //utf8一个汉字相当3个字符        $m = substr($c, $j, 6);        //处理数字中很多0的情况,每次循环去掉一个汉字“零”        if ($m == '零元' || $m == '零万' || $m == '零亿' || $m == '零零') {            $left = substr($c, 0, $j);            $right = substr($c, $j + 3);            $c = $left . $right;            $j = $j-3;            $slen = $slen-3;        }         $j = $j + 3;    }     //这个是为了去掉类似23.0中最后一个“零”字    if (substr($c, strlen($c)-3, 3) == '零') {        $c = substr($c, 0, strlen($c)-3);    }    //将处理的汉字加上“整”    if (empty($c)) {        return "零元整";    }else{        return $c . "整";    }}echo num_to_rmb(<div>本文来*源gaodai^.ma#com搞#代!码网</div><pre>搞gaodaima代码

23000000.00); //贰仟叁佰万元整

代码三:

<?php//先贴一个数字转中文的,最多12位数 function convert_2_cn($num) {$convert_cn = array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");$repair_number = array('零仟零佰零拾零','万万','零仟','零佰','零拾');$unit_cn = array("拾","佰","仟","万","亿");$exp_cn = array("","万","亿");$max_len = 12;$len = strlen($num);if($len > $max_len) {return 'outnumber';}$num = str_pad($num,12,'-',STR_PAD_LEFT);$exp_num = array();$k = 0;for($i=12;$i>0;$i--){if($i%4 == 0) {$k++;}$exp_num[$k][] = substr($num,$i-1,1);}$str = '';foreach($exp_num as $key=>$nums) {if(array_sum($nums)){$str = array_shift($exp_cn) . $str;}foreach($nums as $nk=>$nv) {if($nv == '-'){continue;}if($nk == 0) {$str = $convert_cn[$nv] . $str;} else {$str = $convert_cn[$nv].$unit_cn[$nk-1] . $str;}}}$str = str_replace($repair_number,array('万','亿','-'),$str);$str = preg_replace("/-{2,}/","",$str);$str = str_replace(array('零','-'),array('','零'),$str);return $str;}echo convert_2_cn(1111)."\n";echo convert_2_cn(111111)."\n";echo convert_2_cn(111111111111)."\n";//补充一个中文转数字的function cn_2_num($str){$convert_cn = array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");$skip_words = array("拾","佰","仟");$str = str_replace($skip_words,"",$str);$len = mb_strlen($str,'utf-8');$num = 0;$k = '';for($i=0;$i<$len;$i++) {$cn = mb_substr($str,$i,1,'utf-8');if($cn == '亿') {$num = $num + intval($k)*100000000;$k = '';} elseif($cn == '万') {$num = $num + intval($k)*10000;$k = '';} else {$k = $k . array_search($cn,$convert_cn);}}if($k) {$num = $num + intval($k);}    return $num;                                                            }                                                                   echo cn_2_num('壹仟壹佰壹拾壹亿壹仟壹佰壹拾壹万壹仟壹佰壹拾壹')."\n";                                 echo cn_2_num('拾壹万壹仟壹佰壹拾壹')."\n";  ?>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php数字金额转换成中文大写金额的函数
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址