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缩略图等比例无损压缩,可填充空白区域补充色
Jun 10 PHP
PHP 第二节 数据类型之转换
Apr 28 PHP
gd库图片下载类实现下载网页所有图片的php代码
Aug 20 PHP
php引用计数器进行垃圾收集机制介绍
Sep 19 PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
Jul 25 PHP
php绘制圆形的方法
Jan 24 PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
Sep 23 PHP
php仿微信红包分配算法的实现方法
May 13 PHP
PHP函数rtrim()使用中的怪异现象分析
Feb 24 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
Apr 13 PHP
如何在PHP中读写文件
Sep 07 PHP
基于PHP实现邮箱验证激活过程详解
Oct 28 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 面向对象 final类与final方法
2010/05/05 PHP
使用XDebug调试及单元测试覆盖率分析
2011/01/27 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
PDO::errorCode讲解
2019/01/28 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
jqGrid jQuery 表格插件测试代码
2011/08/23 Javascript
ExtJS4 Grid改变单元格背景颜色及Column render学习
2013/02/06 Javascript
使用JS画图之点、线、面
2015/01/12 Javascript
jquery实现从数组移除指定的值
2015/06/24 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
2017/03/09 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
2017/03/23 Javascript
在vue中使用express-mock搭建mock服务的方法
2018/11/07 Javascript
微信小程序实现打卡日历功能
2020/09/21 Javascript
Node.js 进程平滑离场剖析小结
2019/01/24 Javascript
JavaScript如何操作css
2020/10/24 Javascript
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
[02:53]2018年度DOTA2最佳战队-完美盛典
2018/12/17 DOTA
python登录QQ邮箱发信的实现代码
2013/02/10 Python
Python的形参和实参使用方式
2019/12/24 Python
pytorch中的weight-initilzation用法
2020/06/24 Python
女方婚礼新郎答谢词
2014/01/11 职场文书
国贸专业的职业规划范文
2014/01/23 职场文书
清洁工岗位职责
2014/01/29 职场文书
英文求职信写作小建议
2014/02/16 职场文书
模具专业毕业生自荐书范文
2014/02/19 职场文书
会计岗位职责模板
2014/03/12 职场文书
企业年会主持词
2014/03/27 职场文书
幼儿园中班下学期评语
2014/04/18 职场文书
乡镇党建工作汇报材料
2014/10/27 职场文书
党的群众路线教育实践活动个人对照检查材料(公安)
2014/11/05 职场文书
出纳试用期工作总结2015
2015/05/28 职场文书
婚礼长辈答谢词
2015/09/29 职场文书
校园文化艺术节开幕词
2016/03/04 职场文书
《弟子规》读后感:知廉耻、明是非、懂荣辱、辨善恶
2019/12/03 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers
css3新特性的应用示例分析
2022/03/16 HTML / CSS