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实现密保卡功能实现代码&amp;lt;打包下载直接运行&amp;gt;
Oct 09 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
Jun 19 PHP
php缩放gif和png图透明背景变成黑色的解决方法
Oct 14 PHP
9个经典的PHP代码片段分享
Dec 18 PHP
php数组随机排序实现方法
Jun 13 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
Jan 04 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
Mar 21 PHP
基于PHP实现短信验证码接口(容联运通讯)
Sep 06 PHP
php getcwd与dirname(__FILE__)区别详解
Sep 24 PHP
php中__toString()方法用法示例
Dec 07 PHP
详解Yii2 之 生成 URL 的方法
Jun 16 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
Feb 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
使用sockets:从新闻组中获取文章(三)
2006/10/09 PHP
php获取服务器信息的实现代码
2013/02/04 PHP
PHP使用PDO抽象层获取查询结果的方法示例
2018/05/10 PHP
ExtJS 简介 让你知道extjs是什么
2008/12/29 Javascript
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
javascript实现input file上传图片预览效果
2015/12/31 Javascript
jQuery鼠标悬浮链接弹出跟随图片实例代码
2016/01/08 Javascript
Javascript数组Array基础介绍
2016/03/13 Javascript
在JavaScript中对HTML进行反转义详解
2016/05/18 Javascript
jQuery实现ToolTip元素定位显示功能示例
2016/11/23 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
2016/12/27 Javascript
element ui 对话框el-dialog关闭事件详解
2018/02/26 Javascript
VUE 组件转换为微信小程序组件的方法
2019/11/06 Javascript
JavaScript实现飞舞的泡泡效果
2020/02/07 Javascript
vue通过v-html指令渲染的富文本无法修改样式的解决方案
2020/05/20 Javascript
React冒泡和阻止冒泡的应用详解
2020/08/18 Javascript
python使用os模块的os.walk遍历文件夹示例
2014/01/27 Python
python通过邮件服务器端口发送邮件的方法
2015/04/30 Python
Python实现将HTML转换成doc格式文件的方法示例
2017/11/20 Python
Django Sitemap 站点地图的实现方法
2019/04/29 Python
python实现ip地址查询经纬度定位详解
2019/08/30 Python
Python PyPDF2模块安装使用解析
2020/01/19 Python
Python字符编码转码之GBK,UTF8互转
2020/02/09 Python
Python序列化pickle模块使用详解
2020/03/05 Python
Python之关于类变量的两种赋值区别详解
2020/03/12 Python
Pymysql实现往表中插入数据过程解析
2020/06/02 Python
pytorch读取图像数据转成opencv格式实例
2020/06/02 Python
pandas.DataFrame.drop_duplicates 用法介绍
2020/07/06 Python
Python 实现集合Set的示例
2020/12/21 Python
美国地毯购买网站:Rugs USA
2019/02/23 全球购物
美国厨房和园艺工具网上商店:Nestneed
2019/08/24 全球购物
给全校老师的建议书
2014/03/13 职场文书
机关单位动员会主持词
2014/03/20 职场文书
党的群众路线教育实践活动对照检查材料(个人)
2014/09/24 职场文书
2015年新教师个人工作总结
2015/10/14 职场文书
缓存替换策略及应用(以Redis、InnoDB为例)
2021/07/25 Redis