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 相关文章推荐
PHP的FTP学习(二)[转自奥索]
Oct 09 PHP
PHP新手上路(三)
Oct 09 PHP
怎么样可以把 phpinfo()屏蔽掉?
Nov 24 PHP
一篇不错的PHP基础学习笔记
Mar 18 PHP
php print EOF实现方法
May 21 PHP
ezSQL PHP数据库操作类库
May 16 PHP
PHP中break及continue两个流程控制指令区别分析
Apr 18 PHP
ThinkPHP 防止表单重复提交的方法
Aug 08 PHP
解析smarty 截取字符串函数 truncate的用法介绍
Jun 20 PHP
php操作xml并将其插入数据库的实现方法
Sep 08 PHP
php获取文件名称和扩展名的方法
Feb 07 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
Feb 10 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完整的日历类(CLASS)
2006/11/27 PHP
PHP生成excel时单元格内换行问题的解决方法
2010/08/26 PHP
深入探讨<br />和 \r\n两者有什么区别??
2013/06/05 PHP
浅析php中抽象类和接口的概念以及区别
2013/06/27 PHP
php遍历删除整个目录及文件的方法
2015/03/13 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
2016/01/07 PHP
PHP简单实现欧拉函数Euler功能示例
2017/11/06 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
2019/10/14 PHP
JavaScript中常见陷阱小结
2010/04/27 Javascript
一步一步制作jquery插件Tabs实现过程
2010/07/06 Javascript
jQuery学习笔记之Helloworld
2010/12/22 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
iframe实用操作锦集
2014/04/22 Javascript
Nodejs实现批量下载妹纸图
2015/05/28 NodeJs
详解js的异步编程技术的方法
2017/02/09 Javascript
jquery仿ps颜色拾取功能
2017/03/08 Javascript
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
JS实现图片切换效果
2018/11/17 Javascript
vue组件是如何解析及渲染的?
2021/01/13 Vue.js
跟老齐学Python之复习if语句
2014/10/02 Python
Django框架中的对象列表视图使用示例
2015/07/21 Python
python 获取sqlite3数据库的表名和表字段名的实例
2019/07/17 Python
python3反转字符串的3种方法(小结)
2019/11/07 Python
Python运行DLL文件的方法
2020/01/17 Python
Django实现从数据库中获取到的数据转换为dict
2020/03/27 Python
CSS3的颜色渐变效果的示例代码
2017/09/29 HTML / CSS
详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)
2016/12/15 HTML / CSS
NBA欧洲商店(法国):NBA Europe Store FR
2016/10/19 全球购物
We Fashion荷兰:一家国际时装公司
2018/04/18 全球购物
网络教育毕业生自我鉴定
2013/10/10 职场文书
机电专业毕业生推荐信
2013/11/10 职场文书
会计学自我鉴定
2014/02/06 职场文书
档案工作汇报材料
2014/08/21 职场文书
保密工作承诺书
2014/08/29 职场文书
党性观念心得体会
2014/09/03 职场文书
会计入职心得体会
2016/01/22 职场文书