数值转人民币大写/**
* 数字转人民币金额大写
* Class Ext_Num2Cny
*/
class Number2Cny
{
static $basic = array(0 => "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖");
static $advanced = array(1 => "拾", "佰", "仟");
public static function parseNumber($number)
{
$number = trim($number);
if ($number > 999999999999) {
return "无法处理";
}
if ($number == 0) {
return "零";
}
if (strpos($number, '.')) {
$number = round($number, 2);
$data = explode(".", $number);
$data[0] = self::parseInt($data[0]);
$data[1] = self::parseDec($data[1]);
return $data[0] . $data[1];
} else {
return self::parseInt($number) . '整';
}
}
/**
* 整数部分
* @param $number
* @return string
*/
public static function parseInt($number)
{
$arr = array_reverse(str_split($number));
$data = '';
$zero_num = 0;
foreach ($arr as $k => $v) {
$_chinese = '';
$zero = ($v == 0) ? true : false;
$x = $k % 4;
if ($x && $zero && $zero_num > 1) {
continue;
}
switch ($x) {
case 0:
if ($zero) {
$zero_num = 0;
} else {
$_chinese = self::$basic[$v];
$zero_num = 1;
}
if ($k == 8) {
$_chinese .= '亿';
} elseif
($k == 4) {
$_chinese .= '万';
}
break;
default:
if ($zero) {
if ($zero_num == 1) {
$_chinese = self::$basic[$v];
$zero_num++;
}
} else {
$_chinese = self::$basic[$v];
$_chinese .= self::$advanced[$x];
}
}
$data = $_chinese . $data;
}
if (empty($data)) {
$data = self::$basic[0];
}
return $data . '元';
}
/**
* 小数部分
* @param $number
* @return string
*/
public static function parseDec($number)
{
if (strlen($number)
$arr = array_reverse(str_split($number));
$data = '';
$zero_num = false;
foreach ($arr as $k => $v) {
$zero = ($v == 0) ? true : false;
$_chinese = '';
if ($k == 0) {
if (!$zero) {
$_chinese = self::$basic[$v];
$_chinese .= '分';
$zero_num = true;
}
} else {
if ($zero) {
if ($zero_num) {
$_chinese = self::$basic[$v];
}
} else {
$_chinese = self::$basic[$v];
$_chinese .= '角';
}
}
$data = $_chinese . $data;
}
return $data;
}
}
使用echo Number2Cny::parseNumber(123456);//壹拾贰万叁仟肆佰伍拾陆元整
echo "\n";
echo Number2Cny::parseNumber(0.12);//元壹角贰分
echo "\n";
echo Number2Cny::parseNumber(10);//元壹角贰分
echo "\n";
echo Number2Cny::parseNumber(123456.12);//壹拾贰万叁仟肆佰伍拾陆元壹角贰分
echo "\n";
echo Number2Cny::parseNumber(123456789012.1234); //壹仟贰佰叁拾肆亿伍仟陆佰柒拾捌万玖仟零壹拾贰元壹角贰分