阿拉伯数字金额转大写人民币

 

/**
 * 阿拉伯数字金额转大写人民币
 * 最大位数:999999999999.99
 *
 * @param number $data
 * @return string
 * @author hegz
 * @date 2010/05/23
 */
function numToRmb($data)
{
	$capnum = array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
	$capdigit = array("","拾","佰","仟");
	
	$subdata = explode(".",  $data);
    $yuan = $subdata[0];
    $yaun_len = strlen($yuan);
	
	if ($yaun_len > 12) {
		return "数字字串整数部分不能大于12位。";
	}

	/**
	 * 处理整数部分
	 */
	$j = 0;
	$nonzero = 0;
	$cncap = '';
	if ((int)$yuan > 0) {
		for ($i = 0; $i < $yaun_len; $i++) {
			// 确定个位
			if ($i == 0) {
				$cncap .= "元";
			}
	
			//确定万位
		    if ($i == 4) {
				$j = 0;
				$nonzero = 0;
				$cncap = "万" . $cncap;
			}
	
			//确定亿位
		    if ($i == 8) {
				$j = 0;
				$nonzero = 0;
				$cncap= "亿" . $cncap;
			}
			
		    $numb = substr($yuan, -1, 1); // 截取尾数
			$cncap = ($numb) ? $capnum[$numb] . $capdigit[$j] . $cncap : (($nonzero) ? "零" . $cncap : $cncap);
			$nonzero = ($numb) ? 1 : $nonzero;
			$yuan = substr($yuan, 0, strlen($yuan) - 1); //截去尾数
			$j++;
		}
	}
	
	$cncap = preg_replace("/(零)+/", "\\1", $cncap); // 合并连续“零”

	/**
	 * 处理小数部分
	 * 
	 * 处理“00”、“?0”、“0?”、“??”这四种情形的值
	 */
    if (isset($subdata[1])) {
    	$jiao = substr($subdata[1],0,1);
    	$fen = substr($subdata[1],1,1);
    	$jiao_val = (int)$jiao;
    	$fen_val = (int)$fen;
    	$xs = '';
    	if ($jiao_val == 0 && $fen_val == 0) {
    		$xs = '整';
    	} elseif ($jiao_val > 0 && $fen_val == 0) {
    		$xs = $capnum[$jiao_val] . '角';
    	} elseif ($jiao_val == 0 && $fen_val > 0) {
    		$xs = ((int)$yuan) ? '零' . $capnum[$fen_val] . '分' : $capnum[$fen_val] . '分';
    	} else {
    		$xs = $capnum[$jiao_val] . '角' . $capnum[$fen_val] . '分';
    	}
    }
    
    $cncap .= $xs;    
	return $cncap;
 }

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值