php 把数字转化为大写中文—升级版
继上篇之后,发现某同事悄悄改了新版本,于是被我偷偷保存起来了,功能一样,不过他的比较短小,emmm。放了快一年了,悄悄放到博客里面。
功能需求在另一篇博客里
<?php
function cny_upcase($num) {
if (!is_numeric($num)) {
return false;
} else {
$num = strval($num);
}
$unitDic = [1 => '圆',2 => '拾',3 => '佰',4 => '仟',5 => '萬',6 => '拾',7 => '佰',8 => '仟', 9 => '億'];
$decimalDic = [0 => '角',1 => '分',2 => '厘',3 => '毫'];
$digitDic = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖'];
$int = 0;
$decimal = 0;
if (strpos($num,'.') !== false) {
list($int,$decimal) = explode('.',$num,2);
} else {
$int = $num;
}
$upNum = '';
for ($i = 0; $i < strlen($int); $i++) {
$unitIndex = strlen($int) - $i;
$upNum .= $digitDic[$int[$i]];
$upNum .= $int[$i] ? $unitDic[$unitIndex] : '';
}
if ($decimal) {
for ($i = 0; $i < strlen($decimal); $i++) {
$upNum .= $digitDic[$decimal[$i]];
$upNum .= $decimal[$i] ? $decimalDic[$i] : '';
}
} else {
$upNum .= '整';
}
$upNum = preg_replace('/零+/iu','零',$upNum);
return preg_replace('/^零/iu','',$upNum);
}