php数字金额转大写文字函数,输入需要转换的金额,返回对应的文字
function num2upper($money, $type = false)
{
$result = '';
$money = strrev( (string)($money*100) );
$number = $type ? ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']
: ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
$unit = $type ? ['分','角','元']
: ['分','角','圆'];
$unit2 = $type ? ['千', '万', '十', '百'] : ['仟', '万', '拾', '佰'];
//$unit2 = $type ? ['千', '万', '十', '百'] : ['拾', '佰' ,'仟', '万', ];
$money = (string)$money;
/** - - - - - - - 简单错误处理 - - - - - - **/
if ($money > 99999999999) return '金额过大,无法显示'; //最大值错误提醒;
if ($money == 0) return '零元整'; //0元简单处理;
if ($money < 0) return '金额错误,请联系管理员'; //最大值错误提醒;
$lenght = strlen($money);
for ($i = 0; $i < $lenght; $i++) {
$tmp = '';
// if ( $i != 0 && ($i < $lenght-1)最大位不可能为0 && $money[$i] == 0 && $money[$i+1] == 0) continue ;//跳过多个零
$tmp .= $number[ $money[$i] ]; //数字替换成文字
if ($i < 3) { //小额处理(元角分)
$tmp .= $unit[ $i ];
}else {
//分位不验证 当前数为零 下一位还是0
if ( $i != 0 && $money[$i] == 0 && $money[$i+1] == 0) {
continue ;//跳过多个零
}
if ( $money[$i] != 0 && $i != 10) $tmp .= $unit2[($i-1)%4]; //特殊处理亿元
else if ( $i == 6 ) $tmp .= '万';
else if ( $i == 10 ) $tmp .= '亿';
}
$result = $tmp . $result; //向前将金额文字排列
}
$result = str_replace('零角零分', '整', $result); //添加整字
$result = str_replace('零零圆', '圆', $result); //添加圆字
$result = str_replace('零圆', '圆', $result); //添加圆字
$result = str_replace('零零', '零', $result); //添加整字
$result = str_replace('零万', '万零', $result); //添加整字
$result = str_replace('零分', '', $result); //去掉零分
return $result;
}