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 相关文章推荐
Windows7下PHP开发环境安装配置图文方法
May 20 PHP
php基础教程 php内置函数实例教程
Aug 21 PHP
PHP is_subclass_of函数的一个BUG和解决方法
Jun 01 PHP
kohana框架上传文件验证规则写法示例
Jul 14 PHP
浅析get与post的一些特殊情况
Jul 28 PHP
PHP实现自动登入google play下载app report的方法
Sep 23 PHP
windows中为php安装mongodb与memcache
Jan 06 PHP
PHP数组操作类实例
Jul 11 PHP
php简单中奖算法(实例)
Aug 15 PHP
PHP设计模式之装饰器(装饰者)模式(Decorator)入门与应用详解
Dec 13 PHP
详解Laravel框架的依赖注入功能
May 27 PHP
微信小程序结合ThinkPHP5授权登陆后获取手机号
Nov 23 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
php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
2011/10/31 PHP
Android AsyncTack 异步任务实例详解
2016/11/02 PHP
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
php中get_object_vars()在数组的实例用法
2021/02/22 PHP
基于JQuery的Pager分页器实现代码
2010/07/17 Javascript
jQuery实现切换页面布局使用介绍
2011/10/09 Javascript
IE中jquery.form中ajax提交没反应解决方法分享
2012/09/11 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
2013/06/29 Javascript
JavaScript实现LI列表数据绑定的方法
2015/08/04 Javascript
JS实现隔行换色的表格排序
2017/03/27 Javascript
详解用vue编写弹出框组件
2017/07/04 Javascript
关于webpack2和模块打包的新手指南(小结)
2017/08/07 Javascript
浅谈Koa服务限流方法实践
2017/10/23 Javascript
小程序登录态管理的方法示例
2018/11/13 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
JS替换字符串中指定位置的字符(多种方法)
2020/05/28 Javascript
Python装饰器decorator用法实例
2014/11/10 Python
Python中os.path用法分析
2015/01/15 Python
Python类装饰器实现方法详解
2018/12/21 Python
Python操作配置文件ini的三种方法讲解
2019/02/22 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
2019/08/02 Python
深入了解Python装饰器的高级用法
2020/08/13 Python
HTML5中的音频和视频媒体播放元素小结
2016/01/29 HTML / CSS
《蜗牛》教学反思
2014/02/18 职场文书
酒店管理毕业生自我鉴定
2014/03/02 职场文书
开学典礼决心书
2014/03/11 职场文书
活动总结范文
2014/08/30 职场文书
会议接待欢迎标语
2014/10/08 职场文书
云台山导游词
2015/02/03 职场文书
学校党员干部承诺书
2015/05/04 职场文书
员工表扬信怎么写
2015/05/05 职场文书
考研英语辞职信
2015/05/13 职场文书
2016年度基层党建工作公开承诺书
2016/03/25 职场文书
2016年社区中秋节活动总结
2016/04/05 职场文书
python调用ffmpeg命令行工具便捷操作视频示例实现过程
2021/11/01 Python