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 相关文章推荐
操作Oracle的php类
Oct 09 PHP
使用php来实现网络服务
Sep 15 PHP
如何使用PHP批量去除文件UTF8 BOM信息
Aug 05 PHP
php使用curl检测网页是否被百度收录的示例分享
Jan 31 PHP
php选择排序法实现数组排序实例分析
Feb 16 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
May 13 PHP
php生成Android客户端扫描可登录的二维码
May 13 PHP
PHP函数引用返回的实例详解
Sep 11 PHP
php使用Jpgraph创建3D饼形图效果示例
Feb 15 PHP
php+Ajax无刷新验证用户名操作实例详解
Mar 04 PHP
PHP架构及原理知识点详解
Dec 22 PHP
Nginx+php配置文件及原理解析
Dec 09 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调用Webservice实例代码
2011/07/29 PHP
几种有用的变型 PHP中循环语句的用法介绍
2012/01/30 PHP
PHP 面向对象详解
2012/09/13 PHP
php-fpm配置详解
2014/02/12 PHP
6个超实用的PHP代码片段
2015/08/10 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
php车辆违章查询数据示例
2016/10/14 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
2017/03/09 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
在 Laravel 中动态隐藏 API 字段的方法
2019/10/25 PHP
深入学习JavaScript对象
2015/10/13 Javascript
nodejs修复ipa处理过的png图片
2016/02/17 NodeJs
vue 的keep-alive缓存功能的实现
2018/03/22 Javascript
详解vue使用$http服务端收不到参数
2019/04/19 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
2019/07/23 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
2019/08/28 Javascript
[01:03:56]Mineski vs TNC 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Python实现类的创建与使用方法示例
2017/07/25 Python
python的文件操作方法汇总
2017/11/10 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
对python的bytes类型数据split分割切片方法
2018/12/04 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
2020/02/21 Python
PyCharm永久激活方式(推荐)
2020/09/22 Python
Python图片处理模块PIL操作方法(pillow)
2020/04/07 Python
python利用os模块编写文件复制功能——copy()函数用法
2020/07/13 Python
CSS3 input框的实现代码类似Google登录的动画效果
2020/08/04 HTML / CSS
一些Solaris面试题
2013/03/22 面试题
Laravel的加密解密与哈希实例讲解
2021/03/24 PHP
大学生找工作推荐信范文
2013/11/28 职场文书
班组长安全职责
2014/01/05 职场文书
七年级英语教学反思
2014/01/15 职场文书
2014党员民主评议个人总结
2014/09/10 职场文书
端午节活动总结报告
2015/02/11 职场文书
收入证明怎么写
2015/06/12 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python
上个世纪50年代的可穿戴技术:无线电帽子
2022/02/18 无线电