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时的知识积累总结
Jun 07 PHP
PHP中替换键名的简易方法示例详解
Jan 07 PHP
PHP的error_reporting错误级别变量对照表
Jul 08 PHP
php计算数组相同值出现次数的代码(array_count_values)
Jan 20 PHP
php带抄送和密件抄送的邮件发送方法
Mar 20 PHP
php实现格式化多行文本为Js可用格式
Apr 15 PHP
如何通过Linux命令行使用和运行PHP脚本
Jul 29 PHP
PHP处理数组和XML之间的互相转换
Jun 02 PHP
PHP实现数据库的增删查改功能及完整代码
Apr 18 PHP
Thinkphp5.0框架视图view的循环标签用法示例
Oct 12 PHP
laravel框架中控制器的创建和使用方法分析
Nov 23 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 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 has encountered an Access Violation
2007/01/15 PHP
php禁用cookie后session设置方法分析
2016/10/19 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
2017/05/05 PHP
你需要知道的JavsScript可以做什么?
2007/06/29 Javascript
js 省地市级联选择
2010/02/07 Javascript
jQuery :nth-child前有无空格的区别分析
2011/07/11 Javascript
IE6下opacity与JQuery的奇妙结合
2013/03/01 Javascript
js实现图片放大和拖拽特效代码分享
2015/09/05 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
2016/08/02 Javascript
vue实现可增删查改的成绩单
2016/10/27 Javascript
Three.js入门之hello world以及如何绘制线
2017/09/25 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
2018/03/19 Javascript
微信小程序Page中data数据操作和函数调用方法
2019/05/08 Javascript
JavaScript实现瀑布流布局的3种方式
2020/12/27 Javascript
Python中用Decorator来简化元编程的教程
2015/04/13 Python
python批量爬取下载抖音视频
2019/06/17 Python
python 轮询执行某函数的2种方式
2020/05/03 Python
如何创建一个Flask项目并进行简单配置
2020/11/18 Python
在HTML5中如何使用CSS建立不可选的文字
2014/10/17 HTML / CSS
HTML5中的Web Notification桌面通知功能的实现方法
2019/07/29 HTML / CSS
中国领先的专业演出票务网:永乐票务
2016/08/29 全球购物
Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
2012/06/05 面试题
汇智创新科技发展有限公司
2015/12/06 面试题
施惠特软件测试面试题以及笔试题
2015/05/13 面试题
外贸英语专业求职信范文
2013/12/25 职场文书
幼儿园毕业园长感言
2014/02/24 职场文书
培训协议书范本
2014/04/22 职场文书
超市店庆活动方案
2014/08/31 职场文书
党员民主生活会整改措施
2014/09/26 职场文书
2015个人简历自我评价语
2015/03/11 职场文书
勤俭节约倡议书范文
2015/04/29 职场文书
七夕情人节问候语
2015/11/11 职场文书
2019最新版劳务派遣管理制度
2019/08/16 职场文书
图解上海144收音机
2021/04/22 无线电
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang
一文搞懂PHP中的抽象类和接口
2022/05/25 PHP