php中如何将小写金额转为大写金额?
以前用js写过一个。
思路并不复杂。中文金额大写有个特点,每4个数为一个阶段。
例如1234 = 一千二百三十四
第一组4个数,在每个数字后加上位的名称即可,个位省略。
例如12345678 = 一千二百三十四万五千六百七十八
左边4个数按上面方式处理完,再加一个“万”字,右边4个数同样按上面方式处理。
再多4位数就加一个“亿”
思路并不复杂。中文金额大写有个特点,每4个数为一个阶段。
例如1234 = 一千二百三十四
第一组4个数,在每个数字后加上位的名称即可,个位省略。
例如12345678 = 一千二百三十四万五千六百七十八
左边4个数按上面方式处理完,再加一个“万”字,右边4个数同样按上面方式处理。
再多4位数就加一个“亿”
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-11-25
<input type="text" id="num" onblur="change(this.value)"/>
<span id="rs"></span>
</body>
<script type="text/javascript">
/*function getimg(img){
id = parseInt(Math.random()*4+1);
id = id<10?"0"+id:id;
img.src="img/news/"+id+".jpg";
}*/
var n = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
var dw = new Array("","拾","佰","仟","万","亿");
function change(num){
if(isNaN(num)||num.length==0){
str = "零";
}else{
str = getrs(num);
}
document.getElementById("rs").innerHTML = str;
}
function getrs(num){
var len = num.length;
str = "";
if(len<=5){
for(i=0;i<len-1;i++){
str += n[num[i]];
if(num[i]!="0"){
str += dw[len-1-i];
}
}
if(num[len-1]!="0"){
str += n[num[i]];
}
}else if(len>5&&len<9){
str += getrs(num.substr(0,len-4));
if(str!=""){
str +=dw[4];
}
//万以下
str += getrs(num.substr(len-4));
}else{
//亿以上
str += getrs(num.substr(0,len-8));
if(str!=""){
str +=dw[5];
}
//亿以下
str += getrs(num.substr(len-8));
}
str = str.replace(/["零"]+/g,"零");
str = str.replace(/["零"]+$/g,"");
return str;
}
</script>
<span id="rs"></span>
</body>
<script type="text/javascript">
/*function getimg(img){
id = parseInt(Math.random()*4+1);
id = id<10?"0"+id:id;
img.src="img/news/"+id+".jpg";
}*/
var n = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
var dw = new Array("","拾","佰","仟","万","亿");
function change(num){
if(isNaN(num)||num.length==0){
str = "零";
}else{
str = getrs(num);
}
document.getElementById("rs").innerHTML = str;
}
function getrs(num){
var len = num.length;
str = "";
if(len<=5){
for(i=0;i<len-1;i++){
str += n[num[i]];
if(num[i]!="0"){
str += dw[len-1-i];
}
}
if(num[len-1]!="0"){
str += n[num[i]];
}
}else if(len>5&&len<9){
str += getrs(num.substr(0,len-4));
if(str!=""){
str +=dw[4];
}
//万以下
str += getrs(num.substr(len-4));
}else{
//亿以上
str += getrs(num.substr(0,len-8));
if(str!=""){
str +=dw[5];
}
//亿以下
str += getrs(num.substr(len-8));
}
str = str.replace(/["零"]+/g,"零");
str = str.replace(/["零"]+$/g,"");
return str;
}
</script>
这是将数字转化为大写的,不过是整数,小数部分很简单,往后读就行了
第2个回答 2013-11-25
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;
}
直接传入金额就可以了
$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;
}
直接传入金额就可以了