示例:
4861861.45 肆佰捌拾陆万壹仟捌佰陆拾壹元肆角伍分
10131561684.06 壹佰零壹亿叁仟壹佰伍拾陆万壹仟陆佰捌拾肆元零陆分
function convertCurrency($currencyDigits)
{
$maximum_number = 99999999999.99;//最大转换值 一千亿
$cn_zero = "零";
$cn_one = "壹";
$cn_two = "贰";
$cn_three = "叁";
$cn_four = "肆";
$cn_five = "伍";
$cn_six = "陆";
$cn_seven = "柒";
$cn_eight = "捌";
$cn_nine = "玖";
$cn_ten = "拾";
$cn_hundred = "佰";
$cn_thousand = "仟";
$cn_ten_thousand = "万";
$cn_hundred_million = "亿";
$cn_dollar = "元";
$cn_ten_cent = "角";
$cn_cent = "分";
$cn_integer = "整";
$currencyDigits = (string)$currencyDigits;
if ($currencyDigits > $maximum_number) {
throw new ErrorException('金额过大,应小于1000亿元!');
}
//分隔小数和整数部分
$parts = explode('.', $currencyDigits);
if (count($parts) > 1) {
$integral = $parts[0];//整数
$decimal = mb_substr($parts[1], 0, 2);//小数部分
} else {
$integral = $parts[0];
$decimal = "";
}
$digits = array($cn_zero, $cn_one, $cn_two, $cn_three, $cn_four, $cn_five, $cn_six, $cn_seven, $cn_eight, $cn_nine);
$radices = array("", $cn_ten, $cn_hundred, $cn_thousand);
$bigRadices = array("", $cn_ten_thousand, $cn_hundred_million);
$decimals = array($cn_ten_cent, $cn_cent);
$outputCharacters = "";
//整数部分
if ($integral > 0) {
$zeroCount = 0;
for ($i = 0; $i < strlen($integral); $i++) {
$p = strlen($integral) - $i - 1;
$d = mb_substr($integral, $i, 1);
$quotient = $p / 4;
$modulus = $p % 4;
if ($d == "0") {
$zeroCount++;
} else {
if ($zeroCount > 0) {
$outputCharacters .= $digits[0];
}
$zeroCount = 0;
$outputCharacters .= $digits[$d] . $radices[$modulus];
}
if ($modulus == 0 && $zeroCount < 4) {
$outputCharacters .= $bigRadices[$quotient];
$zeroCount = 0;
}
}
$outputCharacters .= $cn_dollar;
}
//小数部分:
if ($decimal != "") {
$zeroCount = 0;
for ($i = 0; $i < strlen($decimal); $i++) {
$d = substr($decimal, $i, 1);
if ($d != "0") {
if ($zeroCount > 0) {
$outputCharacters .= $digits[0];
}
$outputCharacters .= $digits[$d] . $decimals[$i];
} else {
$zeroCount++;
}
}
}
if ($outputCharacters == "") {
$outputCharacters = $cn_zero . $cn_dollar;
}
if ($decimal == "") {
$outputCharacters .= $cn_integer;
}
return $outputCharacters;
}