PHP把数字转成人民币大写的函数分享


Posted in PHP onJune 30, 2014

做财务的人遇到过这么一个问题,比如13,126.8元,在发票或者其他记账业务中,一般要使用大写进行拼读成“壹万叁仟壹佰贰拾陆元捌角整”。

这不,也贴上我原来在做学车网的一个php函数,供大家参考吧。

/** 

 * 人民币小写转大写 

 * 

 * @param string $number 数值 

 * @param string $int_unit 币种单位,默认"元",有的需求可能为"圆" 

 * @param bool $is_round 是否对小数进行四舍五入 

 * @param bool $is_extra_zero 是否对整数部分以0结尾,小数存在的数字附加0,比如1960.30

 * @return string 

 */

function rmb_format($money = 0, $int_unit = '元', $is_round = true, $is_extra_zero = false) {

    // 将数字切分成两段 

    $parts = explode ( '.', $money, 2 );

    $int = isset ( $parts [0] ) ? strval ( $parts [0] ) : '0';

    $dec = isset ( $parts [1] ) ? strval ( $parts [1] ) : '';

 

    // 如果小数点后多于2位,不四舍五入就直接截,否则就处理 

    $dec_len = strlen ( $dec );

    if (isset ( $parts [1] ) && $dec_len > 2) {

        $dec = $is_round ? substr ( strrchr ( strval ( round ( floatval ( "0." . $dec ), 2 ) ), '.' ), 1 ) : substr ( $parts [1], 0, 2 );

    }

 

    // 当number为0.001时,小数点后的金额为0元 

    if (empty ( $int ) && empty ( $dec )) {

        return '零';

    }

 

    // 定义 

    $chs = array ('0', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' );

    $uni = array ('', '拾', '佰', '仟' );

    $dec_uni = array ('角', '分' );

    $exp = array ('', '万' );

    $res = '';

 

    // 整数部分从右向左找 

    for($i = strlen ( $int ) - 1, $k = 0; $i >= 0; $k ++) {

        $str = '';

        // 按照中文读写习惯,每4个字为一段进行转化,i一直在减 

        for($j = 0; $j < 4 && $i >= 0; $j ++, $i --) {

            $u = $int {$i} > 0 ? $uni [$j] : ''; // 非0的数字后面添加单位 

            $str = $chs [$int {$i}] . $u . $str;

        }

        $str = rtrim ( $str, '0' ); // 去掉末尾的0 

        $str = preg_replace ( "/0+/", "零", $str ); // 替换多个连续的0 

        if (! isset ( $exp [$k] )) {

            $exp [$k] = $exp [$k - 2] . '亿'; // 构建单位 

        }

        $u2 = $str != '' ? $exp [$k] : '';

        $res = $str . $u2 . $res;

    }

 

    // 如果小数部分处理完之后是00,需要处理下 

    $dec = rtrim ( $dec, '0' );

    var_dump ( $dec );

    // 小数部分从左向右找 

    if (! empty ( $dec )) {

        $res .= $int_unit;

 

        // 是否要在整数部分以0结尾的数字后附加0,有的系统有这要求 

        if ($is_extra_zero) {

            if (substr ( $int, - 1 ) === '0') {

                $res .= '零';

            }

        }

 

        for($i = 0, $cnt = strlen ( $dec ); $i < $cnt; $i ++) {                  

            $u = $dec {$i} > 0 ? $dec_uni [$i] : ''; // 非0的数字后面添加单位 

            $res .= $chs [$dec {$i}] . $u;

            if ($cnt == 1)

                $res .= '整';

        }

 

        $res = rtrim ( $res, '0' ); // 去掉末尾的0 

        $res = preg_replace ( "/0+/", "零", $res ); // 替换多个连续的0 

    } else {

        $res .= $int_unit . '整';

    }

    return $res;

}

使用就很简单了

$yuan=13598.3;

$ret=rmb_format($yuan);
PHP 相关文章推荐
基于PHP+MySQL的聊天室设计
Oct 09 PHP
PHP取得一个类的属性和方法的实现代码
May 22 PHP
mcrypt启用 加密以及解密过程详细解析
Aug 07 PHP
完美解决PHP中的Cannot modify header information 问题
Aug 12 PHP
php使用exec shell命令注入的方法讲解
Nov 12 PHP
php中使用array_filter()函数过滤空数组的实现代码
Aug 19 PHP
解决yii2左侧菜单子级无法高亮问题的方法
May 08 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
May 19 PHP
PHP正则表达式匹配替换与分割功能实例浅析
Feb 04 PHP
2017年最新PHP经典面试题目汇总(上篇)
Mar 17 PHP
Mac系统完美安装PHP7详细教程
Jun 06 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
Mar 03 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
Jun 30 #PHP
PHP把JPEG图片转换成Progressive JPEG的方法
Jun 30 #PHP
PHP把小数转成整数3种方法
Jun 30 #PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
Jun 29 #PHP
php防止伪造的数据从URL提交方法
Jun 27 #PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
Jun 27 #PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
Jun 27 #PHP
You might like
PHP连接Access数据库的方法小结
2013/06/20 PHP
漂亮的仿flash菜单,来自蓝色经典
2006/06/26 Javascript
JS中动态添加事件(绑定事件)的代码
2011/01/09 Javascript
通过下拉框的值来确定输入框是否可以为空的代码
2011/10/18 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
2013/10/23 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
2013/11/21 Javascript
javascript实现简单的鼠标拖动效果实例
2015/04/10 Javascript
js实现鼠标划过给div加透明度的方法
2015/05/25 Javascript
JS基于Mootools实现的个性菜单效果代码
2015/10/21 Javascript
莱鸟介绍javascript onclick事件
2016/01/06 Javascript
js捕捉键盘事件和按键键值的方法
2016/10/10 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
讲解vue-router之什么是编程式路由
2018/05/28 Javascript
js实现图片粘贴到网页
2019/12/06 Javascript
js实现消灭星星(web简易版)
2020/03/24 Javascript
python中函数传参详解
2016/07/03 Python
Python之re操作方法(详解)
2017/06/14 Python
详解Django 中是否使用时区的区别
2018/06/14 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
Tensorflow实现酸奶销量预测分析
2019/07/19 Python
详解Python3定时器任务代码
2019/09/23 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
2020/02/25 Python
面向新手解析python Beautiful Soup基本用法
2020/07/11 Python
CSS3绘制超炫的上下起伏波动进度加载动画
2016/04/21 HTML / CSS
改变生活的男士内衣:SAXX Underwear
2019/08/28 全球购物
奥地利领先的在线药房:SHOP APOTHEKE
2019/10/07 全球购物
Oral-B荷兰:牙医最推荐的品牌
2020/02/25 全球购物
化工机械应届生求职信
2013/11/04 职场文书
信息部岗位职责
2013/11/12 职场文书
大学生的自我鉴定范文
2014/01/21 职场文书
上党课的心得体会
2014/09/02 职场文书
领导班子四风对照检查材料范文
2014/09/27 职场文书
客户经理岗位职责大全
2015/04/09 职场文书
离婚案件答辩状
2015/05/22 职场文书
《认识年月日》教学反思
2016/02/19 职场文书
Java+swing实现抖音上的表白程序详解
2022/06/25 Java/Android