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

做财务的人遇到过这么一个问题,比如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);

(0)

相关推荐

  • 用PHP实现小写金额转换大写金额的代码(精确到分)

    复制代码 代码如下: /** *数字金额转换成中文大写金额的函数 *String Int $num 要转换的小写数字或小写字符串 *return 大写字母 *小数位为两位 **/ function get_amount($num){ $c1 = "零壹贰叁肆伍陆柒捌玖"; $c2 = "分角元拾佰仟万拾佰仟亿"; $num = round($num, 2); $num = $num * 100; if (strlen($num) > 10) { return

  • PHP人民币金额转大写实例代码

    PHP人民币金额转大写,其实质就是数字转换成中文大写,测试了一下,非常有趣,随便输个数字,就可以将其大写打印出来,初学的朋友们试一下吧 //PHP人民币金额转大写 class Ext_Num2Cny{ static $basical = array(0=>"零","壹","贰","叁","肆","伍","陆","柒","捌"

  • PHP人民币金额数字转中文大写的函数代码

    在网上看到一个非常有趣的PHP人民币金额数字转中文大写的函数,其实质就是数字转换成中文大写,测试了一下,非常有趣,随便输个数字,就可以将其大写打印出来,新手朋友们试一下吧,举一反三,还可以写好多有趣的PHP转换函数. 复制代码 代码如下: <?  function cny($ns) {     static $cnums=array("零","壹","贰","叁","肆","伍",

  • php将金额数字转化为中文大写

    php将金额数字转化为中文大写 echo toChineseNumber(1234567890);//壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾圆 function toChineseNumber($money){ $money = round($money,2); $cnynums = array("零","壹","贰","叁","肆","伍","陆","柒&q

  • php格式化金额函数分享

    最近的项目在处理资金这一块的功能,对人民币金额的格式化输出是必不可少的功能.这个功能比较独立而且还比较大众化,所以封装成了函数就发上去也算是方便大家. 复制代码 代码如下: /**  * 格式化金额  *  * @param int $money  * @param int $len  * @param string $sign  * @return string  */ function format_money($money, $len=2, $sign='¥'){     $negativ

  • jquery+php随机生成红包金额数量代码分享

    本文实例讲述了jquery+php实现的随机生成红包金额数量特效.分享给大家供大家参考.具体如下: jquery+php实现的随机生成红包金额数量特效是一段实现了可以将一定金额的钱生成多个不同金额的红包的效果代码,红包数量与金钱可以自己设定. 运行效果图:                              -------------------查看效果 下载源码------------------- 小提示:浏览器中如果不能正常运行,可以尝试切换浏览模式. 为大家分享的jquery+ph

  • PHP 金额数字转换成英文

    复制代码 代码如下: <?php $num=1220.01; echo fmoney($num);//结果:1,220.21 echo umoney($num); //结果:ONE THOUSAND AND TWO HUNDRED TWENTY DOLLARS AND TWENTY-ONE CENTS ONLY echo umoney($num,"rmb"); //结果:ONE THOUSAND AND TWO HUNDRED TWENTY YUAN AND TWENTY-ONE

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

    做财务的人遇到过这么一个问题,比如13,126.8元,在发票或者其他记账业务中,一般要使用大写进行拼读成"壹万叁仟壹佰贰拾陆元捌角整". 这不,也贴上我原来在做学车网的一个php函数,供大家参考吧. 复制代码 代码如下: /**  * 人民币小写转大写  *  * @param string $number 数值  * @param string $int_unit 币种单位,默认"元",有的需求可能为"圆"  * @param bool $is

  • java实现将数字转换成人民币大写

    Rmb.java public class Rmb { /** *人民币的基本信息和操作 *@author weinee *@version 1.0 */ double number; //人民币的数量 private String[] hanArr = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "

  • 正则一则 将金额转换成人民币大写的代码

    复制代码 代码如下: public static string ConvertToChineseMoney(double money) { if (money < 0) throw new ArgumentOutOfRangeException("参数money不能为负值!"); string s = money.ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A")

  • python实现将英文单词表示的数字转换成阿拉伯数字的方法

    本文实例讲述了python实现将英文单词表示的数字转换成阿拉伯数字的方法.分享给大家供大家参考.具体实现方法如下: import re _known = { 'zero': 0, 'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6, 'seven': 7, 'eight': 8, 'nine': 9, 'ten': 10, 'eleven': 11, 'twelve': 12, 'thirteen': 13, 'fourt

  • C#将字母或数字加密成字母的方法

    本文实例讲述了C#将字母或数字加密成字母的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: public class MD5 {         static List<KeyValuePair<char, char>> MappingList;         #region 加密      public static string Encrypt(string str)         /// <summary>         /// 加密  

  • Java实现数字转成英文的方法

    本文实例讲述了Java实现数字转成英文的方法.分享给大家供大家参考.具体分析如下: 英文数词,按3位3位区分 Hundred: 100 Thousand:1,000 Million: 1,000,000 Billion: 1,000,000,000 Trillion: 1,000,000,000,000 Quintillion: 1,000,000,000,000,000,000 Sextillion: 1,000,000,000,000,000,000,000 Nonillion: 1,000

  • 人民币数字转换成大写形式

    运用了正则表达式的功能,除了可以正确的转换成人民币的大写形式以外,还可以判断输入的形式是否正确有效. 将人民币数字转换成大写形式 function convertCurrency(currencyDigits) { // Constants: var MAXIMUM_NUMBER = 99999999999.99; // Predefine the radix characters and currency symbols for output: var CN_ZERO = "零";

  • 将数字转换成大写的人民币表达式的js函数

    将数字转换成大写的人民币,方法有很多,本例介绍的是使用js来完成的,看看下面的实现代码 function changeNumMoneyToChinese(money) { var cnNums = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖&quo

  • JavaScript将数字转换成大写中文的方法

    本文实例讲述了JavaScript将数字转换成大写中文的方法.分享给大家供大家参考.具体实现方法如下: function intToChinese ( str ) { str = str+''; var len = str.length-1; var idxs = ['','十','百','千','万','十','百','千','亿','十','百','千','万','十','百','千','亿']; var num = ['零','壹','贰','叁','肆','伍','陆','柒','捌',

随机推荐