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函数
Oct 03 PHP
PHP 冒泡排序算法的实现代码
Aug 08 PHP
php购物网站支付paypal使用方法
Nov 28 PHP
CodeIgniter框架中_remap()使用方法2例
Mar 10 PHP
3个PHP多维数组转为一维数组的方法实例
Mar 13 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
Aug 19 PHP
微信公众平台消息接口校验与消息接口响应实例
Dec 23 PHP
Laravel中使用自己编写类库的3种方法
Feb 10 PHP
php实现的简单检验登陆类
Jun 18 PHP
php正则修正符用法实例详解
Dec 29 PHP
php扩展开发入门demo示例
Sep 23 PHP
Yii框架 session 数据库存储操作方法示例
Nov 18 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中使用break跳出多重循环代码实例
2015/01/21 PHP
php如何连接sql server
2015/10/16 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
PHP explode()函数用法讲解
2019/02/15 PHP
javascript之水平横向滚动歌词同步的应用
2007/05/07 Javascript
获取网站跟路径的javascript代码(站点及虚拟目录)
2009/10/20 Javascript
JQuery中html()方法使用不当带来的陷阱
2011/04/07 Javascript
jQuery.get、jQuery.getJSON、jQuery.post无法返回JSON问题的解决方法
2011/07/28 Javascript
Extjs NumberField后面加单位实现思路
2013/07/30 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
jQuery在ie6下无法设置select选中的解决方法详解
2016/09/20 Javascript
js数组实现权重概率分配
2017/09/12 Javascript
微信小程序使用radio显示单选项功能【附源码下载】
2017/12/11 Javascript
jQuery实现input[type=file]多图预览上传删除等功能
2019/08/02 jQuery
Element图表初始大小及窗口自适应实现
2020/07/10 Javascript
js实现简单选项卡制作
2020/08/05 Javascript
[03:24]2014DOTA2国际邀请赛 神秘商店生意火爆
2014/07/18 DOTA
python中的闭包用法实例详解
2015/05/05 Python
完美解决Python matplotlib绘图时汉字显示不正常的问题
2019/01/29 Python
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
Python求解排列中的逆序数个数实例
2020/05/03 Python
python构造IP报文实例
2020/05/05 Python
python字符串的index和find的区别详解
2020/06/20 Python
详解python UDP 编程
2020/08/24 Python
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
最新计算机专业自荐信
2013/10/16 职场文书
村官工作鉴定评语
2014/01/27 职场文书
英语专业求职信
2014/07/08 职场文书
动物科学专业求职信
2014/07/27 职场文书
学习十八大的心得体会
2014/09/01 职场文书
安全教育第一课观后感
2015/06/17 职场文书
交通安全教育主题班会
2015/08/12 职场文书
python 实现图与图之间的间距调整subplots_adjust
2021/05/21 Python
Python移位密码、仿射变换解密实例代码
2021/06/27 Python