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 相关文章推荐
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
Jul 09 PHP
浅谈Windows下 PHP4.0与oracle 8的连接设置
Oct 09 PHP
?繁体转换的class
Oct 09 PHP
实用函数3
Nov 08 PHP
php 无限级缓存的类的扩展
Mar 16 PHP
Memcache 在PHP中的使用技巧
Feb 08 PHP
利用浏览器的Javascript控制台调试PHP程序
Jan 08 PHP
ThinkPHP3.2.2的插件控制器功能
Mar 05 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
Nov 18 PHP
php htmlentities()函数的定义和用法
May 13 PHP
PHP 二级子目录(后台目录)设置二级域名
Mar 02 PHP
PHP设计模式之观察者模式定义与用法示例
Aug 04 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
利用Ffmpeg获得flv视频缩略图和视频时间的代码
2011/09/15 PHP
PHP实现获取url地址中顶级域名的方法示例
2019/06/05 PHP
农历与西历对照
2006/09/06 Javascript
js setTimeout opener的用法示例详解
2013/10/23 Javascript
jquery获取html元素的绝对位置和相对位置的方法
2014/06/20 Javascript
javascript HTML+CSS实现经典橙色导航菜单
2016/02/16 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
IE下JS保存图片的简单实例
2016/07/15 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
Vue自定义图片懒加载指令v-lazyload详解
2020/12/31 Javascript
微信小程序 刷新上拉下拉不会断详细介绍
2017/05/11 Javascript
基于bootstrop常用类总结(推荐)
2017/09/11 Javascript
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
2017/10/24 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
基于Vue+ElementUI的省市区地址选择通用组件
2019/11/20 Javascript
[00:52]玛尔斯技能全介绍
2019/03/06 DOTA
python使用筛选法计算小于给定数字的所有素数
2018/03/19 Python
Python实现的爬取小说爬虫功能示例
2019/03/30 Python
pandas的连接函数concat()函数的具体使用方法
2019/07/09 Python
python正则表达式匹配IP代码实例
2019/12/28 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
2020/02/17 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
美国LOGO设计公司:The Logo Company
2018/07/16 全球购物
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
芭比波朗加拿大官方网站:Bobbi Brown Cosmetics CA
2020/11/05 全球购物
销售代表求职自荐信
2013/10/01 职场文书
旅游管理毕业生自荐信
2013/11/05 职场文书
寒假实习自荐信
2014/01/26 职场文书
劳动之星获奖感言
2014/02/01 职场文书
护理专业自荐信范文
2014/02/26 职场文书
银行自荐信怎么写
2015/03/05 职场文书
党员承诺书格式范文
2015/04/28 职场文书
全陪导游词开场白
2015/05/29 职场文书
《狮子和鹿》教学反思
2016/02/16 职场文书
如何理解及使用Python闭包
2021/06/01 Python