php人民币转换,PHP 转换人民币数字为大写

echo RMB_Transform(0.0121);

exit("\n");

/**

*函数名称: RMB_Transform作者: Dandy.Mu

*谱写日期: 忘记了

*函数说明: 将指定的金额转换为中文大写模式

*参数说明:

* @Money => 金额[数字型]

*返回信息: 转换后的大写字符

*/

function RMB_Transform($Money)

{

if ( ! is_numeric($Money) ) return false;

$Number  = array('零','壹','贰','叁','肆','伍','陆','柒','捌','玖');// 数字翻译

$lMarked = array('拾','佰','仟');// 小数点左边数字的标示

$rMarked = array('角','分','哩','毫');// 小数点右边数字的标示

$bMarKed = array('圆', '万', '亿');// 每组尾数的标识

list($Left, $Right) = explode('.', $Money);// 分割小数点的左右

while (strlen($Left) >= 1) {// 将数字分割为4个一组

$aLeft[] = substr($Left, -4, 4);$Left = substr($Left, 0, -4);

}

krsort($aLeft);// 逆向排序数组,因为要先翻译最大的数

foreach ($aLeft as $Key1 => $Value1) {// 循环上面的分组后的字符

$tLeft = str_split($Value1);$ctLeft = count($tLeft) - 2;// 将分组后的字符分割并计算数组的长度

# ------- Head ------------------------- #

# 循环分割为单个字符的数组,然后进行翻译。#

# 如果值为0的话,则只赋值并不赋予标识。  #

# ------- End -------------------------- #

foreach ($tLeft as $Key2 => $Value2)

$tretData .= $Value2 ? $Number[$Value2].$lMarked[$ctLeft-$Key2] : $Number[0];

$tretData = preg_replace('/('.$Number[0].')+$/', '', $tretData);// 去除尾部的 零

$retData .= $tretData.(empty($tretData) ? '' : $bMarKed[$Key1 > 2 ? 1 : $Key1]);// 给最终结果赋值,并增加特殊位标识也就是 圆 万 亿

unset($Key2, $Value2, $tretData);

}

unset($tLeft, $ctLeft, $aLeft, $Left, $Key1, $Value1);

// 如果有小数点后面的数字的话,则进行翻译。

if ( is_numeric($Right) ) {

foreach (str_split(substr($Right, 0, 4)) as $Key3 => $Value3) {

$tretData .= $Value3 ? $Number[$Value3].$rMarked[$Key3] : $Number[0];

}

$tretData = preg_replace('/^('.$Number[0].')+/', '', $tretData);// 去除尾部的 零

}

$retData .= preg_replace('/('.$Number[0].')+/', $Number[0], $tretData);// 将多个的 零 替换为一个 零

unset($Right, $Key3, $Value3, $tretData, $Number, $lMarked, $rMarked, $bMarKed);

return $retData;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值