php阿拉伯数字转中文人民币大写


Posted in PHP onDecember 21, 2015

本文实例为大家分享了php阿拉伯数字转中文人民币大写的实现代码,供大家参考,具体代码如下

代码1:php阿拉伯数字转中文人民币大写,有详细的注释

/**
*数字金额转换成中文大写金额的函数
*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(23000000.00); //贰仟叁佰万元整

代码2:php阿拉伯数字转中文大写金额

// 阿拉伯数字转中文大写金额
function NumToCNMoney($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>1 and $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;
}
 
 
echo (NumToCNMoney(2.55)."<br>");
echo (NumToCNMoney(2.55,1,0)."<br>");
echo (NumToCNMoney(7965)."<br>");
echo (NumToCNMoney(7965,1,0)."<br>");
echo (NumToCNMoney(155555555.68)."<br>");
echo (NumToCNMoney(155555555.68,1,0)."<br>");
echo (NumToCNMoney(0.8888888)."<br>");
echo (NumToCNMoney(0.8888888,1,0)."<br>");
echo (NumToCNMoney(99999999999)."<br>");
echo (NumToCNMoney(99999999999,1,0)."<br>");

希望本文所述对大家学习php程序设计有所帮助。

PHP 相关文章推荐
PHP4实际应用经验篇(6)
Oct 09 PHP
php GD绘制24小时柱状图
Jun 28 PHP
PHP strtr() 函数使用说明
Nov 21 PHP
在PHP中养成7个面向对象的好习惯
Jan 28 PHP
Win下如何安装PHP的APC拓展
Aug 07 PHP
Drupal7连接多个数据库及常见问题解决
Mar 02 PHP
php实现文本数据导入SQL SERVER
May 17 PHP
PHP通过反射动态加载第三方类和获得类源码的实例
Nov 27 PHP
PHP构造二叉树算法示例
Jun 21 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
php使用socket调用http和smtp协议实例小结
Jul 26 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
Dec 11 PHP
详解PHP执行定时任务的实现思路
Dec 21 #PHP
PHP定时执行任务的3种方法详解
Dec 21 #PHP
详解PHP实现执行定时任务
Dec 21 #PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
Dec 21 #PHP
php防止CC攻击代码 php防止网页频繁刷新
Dec 21 #PHP
PHP版本常用的排序算法汇总
Dec 20 #PHP
php封装好的人民币数值转中文大写类
Dec 20 #PHP
You might like
转换中文日期的PHP程序
2006/10/09 PHP
使用cookie实现统计访问者登陆次数
2013/06/08 PHP
PHP中绘制图像的一些函数总结
2014/11/19 PHP
php实现mysql数据库连接操作及用户管理
2015/11/08 PHP
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
jQuery中的基本选择器用法学习教程
2016/04/14 Javascript
jQuery validate插件功能与用法详解
2016/12/15 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
Vue双向数据绑定(MVVM)的原理
2020/10/03 Javascript
[02:23]2014DOTA2国际邀请赛中国战队回顾
2014/08/01 DOTA
[53:52]OG vs EG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python中的格式化输出用法总结
2016/07/28 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
在python中按照特定顺序访问字典的方法详解
2018/12/14 Python
python Django里CSRF 对应策略详解
2019/08/05 Python
python requests更换代理适用于IP频率限制的方法
2019/08/21 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
2020/03/30 Python
解决python执行较大excel文件openpyxl慢问题
2020/05/15 Python
python实现PolynomialFeatures多项式的方法
2021/01/06 Python
使用css3实现的windows8开机加载动画
2014/12/09 HTML / CSS
详解H5 活动页之移动端 REM 布局适配方法
2017/12/07 HTML / CSS
KEETSA环保床垫:更好的睡眠,更好的生活!
2016/11/24 全球购物
Lovedrobe官网:英国领先的大码服装品牌
2019/09/19 全球购物
药学专业个人自我评价
2013/11/11 职场文书
好军嫂事迹材料
2014/01/15 职场文书
安全事故检讨书
2014/01/18 职场文书
学校与家长安全责任书
2014/07/23 职场文书
租房安全协议书
2014/08/20 职场文书
党员四风问题对照检查材料思想汇报
2014/09/16 职场文书
先进个人自荐书
2015/03/06 职场文书
教师求职信怎么写
2015/03/20 职场文书
趣味运动会简讯
2015/07/20 职场文书
2016年村干部公开承诺书(公开承诺事项)
2016/03/25 职场文书
jdbc使用PreparedStatement批量插入数据的方法
2021/04/27 MySQL
Go 语言中 20 个占位符的整理
2021/10/16 Golang