醉菜鸟 2021-07-31 13:04:41

php 数字转人民币金额大写

/**
* 数字转人民币
* @param int|float $number 浮点数仅显示四位小数
* @return string
*/
function num_rmb($number = 0){
$rmb_num = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖'];
$big_unit = ['','万','亿','兆'];
$middle_unit = ['','拾','佰','仟'];
$small_unit = ['角','分','毫','厘'];

if (!preg_match('/[\d^\.]+/',$number)) return '输入格式有误';

if ($number >= 1e15) return '超出最大处理数字';

if ($number == 0) return $rmb_num[0].'圆整';

if(is_int($number)){
$int = $number;
$float= '';
} else {
$nums = explode('.',number_format($number,'4','.',''));
$int = $nums[0];
$float= $nums[1];
}

$count = 0;
$rmb = '';
if( $int > 0 ){
$int_len = strlen($int);
for ($i = 0; $i < $int_len; $i++) {
$p = $int_len - $i - 1;
$h = $p / 4;
$f = $p % 4;
if(($num = substr($int, $i, 1)) == '0'){
$count++;
}else{
$count > 0 && ($rmb.=$rmb_num[0]);
$count = 0;
$rmb.= $rmb_num[$num].$middle_unit[$f];
}
0 == $f && $count < 4 && ($rmb.= $big_unit[$h]);
}
$rmb.= '圆';
}
if ($float != ''){
$float_len = strlen($float);
for ($i = 0; $i < $float_len; $i++) {
$num = substr($float, $i, 1);
if($num != '0'){
$rmb.= $rmb_num[$num].$small_unit[$i];
}
}
}
if($rmb == ''){
$rmb.= $rmb_num[0].'圆整';
}
$rmb == '' ? $rmb.= $rmb_num[0].'圆整' : $float == '' && ($rmb.='整');
return $rmb;
}
意见反馈