以前用js写过一个。
思路并不复杂。中文金额大写有个特点,每4个数为一个阶段。
例如1234 = 一千二百三十四
第一组4个数,在每个数字后加上位的名称即可,个位省略。
例如12345678 = 一千二百三十四万五千六百七十八
左边4个数按上面方式处理完,再加一个“万”字,右边4个数同样按上面方式处理。
再多4位数就加一个“亿”
这是将数字转化为大写的,不过是整数,小数部分很简单,往后读就行了
function d2cn($d) {
$aryN = array('零','壹','贰','叁','肆','伍','陆','柒','捌','玖');
$aryW = array('分','角','元','拾','佰','仟','万','拾','佰','仟','亿','拾','佰','仟','万');
$return = "";
$d = "". $d * 100;
if(!$d || strlen($d) > 15) return $return;
for ($i=0,$len=strlen($d); $i<$len; $i++) {
$w = $len - $i - 1;
if(!$d{$i}) {
if($d{$i+1}) $return .= $aryN[$d{$i}];
if(in_array($w, array(2,6,10))) $return .= $aryW[$w];
}
else $return .= $aryN[$d{$i}].$aryW[$w];
}
return $return;
}
直接传入金额就可以了