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
PHP求小于1000的所有水仙花数的代码
Jan 10 PHP
php读取csv实现csv文件下载功能
Dec 18 PHP
php求两个目录的相对路径示例(php获取相对路径)
Mar 27 PHP
Linux系统递归生成目录中文件的md5的方法
Jun 29 PHP
PHP工程师VIM配置分享
Dec 15 PHP
PHP实现APP微信支付的实例讲解
Feb 10 PHP
php中如何执行linux命令详解
Nov 06 PHP
php如何计算两坐标点之间的距离
Dec 29 PHP
PHP工厂模式的日常使用
Mar 20 PHP
laravel框架如何设置公共头和公共尾
Oct 22 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
Apr 06 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数据缓存技术
2007/02/14 PHP
PHP 文件类型判断代码
2009/03/13 PHP
PHP实现的MongoDB数据库操作类分享
2014/05/12 PHP
调用WordPress函数统计文章访问量及PHP原生计数器的实现
2016/03/21 PHP
PHP 搜索查询功能实现
2016/11/29 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
2019/04/03 PHP
PHP预定义接口――Iterator用法示例
2020/06/05 PHP
准确获得页面、窗口高度及宽度的JS
2006/11/26 Javascript
javascript一点特殊用法
2008/05/28 Javascript
Jquery实战_读书笔记2 选择器
2010/01/22 Javascript
javascript 静态对象和构造函数的使用和公私问题
2010/03/02 Javascript
用JS判断IE版本的代码 超管用!
2011/08/09 Javascript
js实现快速分享功能(你的文章分享工具)
2013/06/25 Javascript
用js将内容复制到剪贴板兼容浏览器
2014/03/18 Javascript
Angular2自定义分页组件
2017/04/19 Javascript
Angularjs之ngModel中的值验证绑定方法
2018/09/13 Javascript
浅谈发布订阅模式与观察者模式
2019/04/09 Javascript
LayUI动态设置checkbox不显示的解决方法
2019/09/02 Javascript
微信小程序 生成携带参数的二维码
2019/10/23 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
分析Python中设计模式之Decorator装饰器模式的要点
2016/03/02 Python
python下读取公私钥做加解密实例详解
2017/03/29 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
Python编写打字训练小程序
2019/09/26 Python
解决django FileFIELD的编码问题
2020/03/30 Python
美国半成品食材配送服务商:Home Chef
2018/01/25 全球购物
EJB timer的种类
2014/10/28 面试题
元旦获奖感言
2014/03/08 职场文书
大学生个人求职信
2014/06/02 职场文书
HR求职自荐信范文
2014/06/21 职场文书
购房公证委托书(2014版)
2014/09/12 职场文书
领导班子四风问题个人对照检查材料
2014/10/04 职场文书
师德自我剖析材料范文
2014/10/06 职场文书
预备党员入党思想汇报(范文)
2019/08/14 职场文书
Golang连接并操作MySQL
2022/04/14 MySQL
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技