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 相关文章推荐
一个阿拉伯数字转中文数字的函数
Oct 09 PHP
使用dump函数,给php加断点测试
Jun 25 PHP
php jq jquery getJSON跨域提交数据完整版
Sep 13 PHP
ThinkPHP CURD方法之page方法详解
Jun 18 PHP
php合并数组中相同元素的方法
Nov 13 PHP
PHP集成百度Ueditor 1.4.3
Nov 23 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
Oct 09 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
Jul 19 PHP
关于PHP中协程和阻塞的一些理解与思考
Aug 11 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
Jan 10 PHP
解决laravel(5.5)访问public报错的问题
Oct 12 PHP
Yii使用EasyWechat实现小程序获取用户的openID的方法
Apr 29 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
资料注册后发信小技巧
2006/10/09 PHP
附件名前加网站名
2008/03/23 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
看了就知道什么是JSON
2007/12/09 Javascript
jquery1.4后 jqDrag 拖动 不可用
2010/02/06 Javascript
jQuery实现拖动调整表格单元格大小的代码实例
2015/01/13 Javascript
Javascript实现多彩雪花从天降散落效果的方法
2015/02/02 Javascript
jquery图形密码实现方法
2015/03/11 Javascript
javascript控制台详解
2015/06/25 Javascript
Jquery attr()方法 属性赋值和属性获取详解
2016/04/15 Javascript
Angular 输入框实现自定义验证功能
2017/02/19 Javascript
原生js二级联动效果
2017/06/20 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
2017/07/20 Javascript
AngularJs的UI组件ui-Bootstrap之Tooltip和Popover
2018/07/13 Javascript
npm 语义版本控制详解
2019/09/10 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
[01:11:10]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG加赛
2014/05/26 DOTA
python实现微信发送邮件关闭电脑功能
2018/02/22 Python
python 将字符串转换成字典dict的各种方式总结
2018/03/23 Python
Python实现读取Properties配置文件的方法
2018/03/29 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
python实现flappy bird游戏
2018/12/24 Python
python assert的用处示例详解
2019/04/01 Python
对Python函数设计规范详解
2019/07/19 Python
python英语单词测试小程序代码实例
2019/09/09 Python
审计主管岗位职责
2014/01/31 职场文书
乡下人家教学反思
2014/02/01 职场文书
中学生打架检讨书
2014/02/10 职场文书
大龄毕业生求职别忘职业规划
2014/03/11 职场文书
个人授权委托书
2014/04/03 职场文书
大学生入党自传2015
2015/06/26 职场文书
搞笑婚礼主持词开场白
2015/11/24 职场文书
新手入门Mysql--概念
2021/06/18 MySQL
「天才王子的赤字国家重生术」妮妮姆·拉雷粘土人开订
2022/03/21 日漫
全新239军机修复记
2022/04/05 无线电