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中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
Aug 21 PHP
PHP中foreach循环中使用引用要注意的地方
Jan 02 PHP
php 判断服务器操作系统的类型
Feb 17 PHP
CodeIgniter框架过滤HTML危险代码
Jun 12 PHP
一个图片地址分解程序(用于PHP小偷程序)
Aug 23 PHP
php多个文件及图片上传实例详解
Nov 10 PHP
PHP访问数据库集群的方法小结
Mar 14 PHP
PHP对象相关知识总结
Apr 09 PHP
Laravel框架中Blade模板的用法示例
Aug 30 PHP
php+lottery.js实现九宫格抽奖功能
Jul 21 PHP
PHP单元测试配置与使用方法详解
Dec 27 PHP
php并发加锁问题分析与设计代码实例讲解
Feb 26 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解析html类库simple_html_dom的转码bug
2014/05/22 PHP
php合并数组中相同元素的方法
2014/11/13 PHP
PHP GD库生成图像的几个函数总结
2014/11/19 PHP
php在数组中查找指定值的方法
2015/03/17 PHP
php生成gif动画的方法
2015/11/05 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
收集的一些Array及String原型对象的扩展实现代码
2010/12/05 Javascript
select标记美化--JS式插件、后期加载
2013/04/01 Javascript
Javascript基础教程之定义和调用函数
2015/01/18 Javascript
JavaScript中for循环的使用详解
2015/06/03 Javascript
轻松实现jquery手风琴效果
2016/01/14 Javascript
Bootstrap基本样式学习笔记之图片(6)
2016/12/07 Javascript
JS给按钮添加跳转功能类似a标签
2017/05/30 Javascript
vue路由嵌套的SPA实现步骤
2017/11/06 Javascript
微信小程序radio组件使用详解
2018/01/31 Javascript
详解小程序输入框闪烁及重影BUG解决方案
2018/08/31 Javascript
[31:29]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第一场 12.20
2020/12/23 DOTA
Python中删除文件的程序代码
2011/03/13 Python
Python实现Pig Latin小游戏实例代码
2018/02/02 Python
详解Python传入参数的几种方法
2019/05/16 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
pytorch 共享参数的示例
2019/08/17 Python
python集合常见运算案例解析
2019/10/17 Python
Html5 实现微信分享及自定义内容的流程
2019/08/20 HTML / CSS
凯撒娱乐:Caesars Entertainment
2018/02/23 全球购物
日本即尚网:JSHOPPERS.com(支持中文)
2019/12/03 全球购物
编程实现当输入某产品代码则打印出该产品记录的功能
2014/05/03 面试题
通信工程毕业生求职信
2013/11/16 职场文书
将相和教学反思
2014/02/04 职场文书
少年闰土教学反思
2014/02/22 职场文书
《称象》教学反思
2014/04/25 职场文书
解除劳动合同协议书
2014/09/17 职场文书
公务员政审材料范文
2014/12/23 职场文书
催款通知书范文
2015/04/17 职场文书
五年级语文教学反思
2016/03/03 职场文书
聊聊基于pytorch实现Resnet对本地数据集的训练问题
2022/03/25 Python