Copy code The code is as follows:
$num=1220.01;
echo fmoney($num) ;//Result: 1,220.21
echo umoney($num);
//Result: ONE THOUSAND AND TWO HUNDRED TWENTY DOLLARS AND TWENTY-ONE CENTS ONLY
echo umoney($num,"rmb");
//Result: ONE THOUSAND AND TWO HUNDRED TWENTY YUAN AND TWENTY-ONE FEN ONLY
//define
//Format currency
function fmoney($num) {
$num=0+$num;
$num = sprintf("%.02f",$num);
if(strlen($num) <= 6) return $num;
// Counting from the end, add one "," to every 3 numbers
for($i=strlen($num)-1,$k=1, $j=100; $i >= 0; $ i--,$k++) {
$one_num = substr($num,$i,1);
if($one_num == ".") {
$numArray[$j--] = $one_num;
$k=0;
continue;
}
if($k%3==0 and $i!=0) {
//if If there are exactly 3 numbers left, do not add ','
$numArray[$j--] = $one_num;
$numArray[$j--] = ",";
$k =0;
} else {
$numArray[$j--]=$one_num;
}
}
ksort($numArray);
return join("", $numArray);
}
function umoney($num,$type="usd") {
global $numTable,$commaTable,$moneyType;
//global $numTable;
$numTable[0]="ZERO ";
$numTable[1]="ONE ";
$numTable[2]="TWO " ;
$numTable[3]="THREE ";
$numTable[4]="FOUR ";
$numTable[5]="FIVE ";
$numTable[6]=" SIX ";
$numTable[7]="SEVEN ";
$numTable[8]="EIGHT ";
$numTable[9]="NINE ";
$numTable[10] ="TEN ";
$numTable[11]="ELEVEN ";
$numTable[12]="TWELVE ";
$numTable[13]="THIRTEEN ";
$numTable[ 14]="FOURTEEN ";
$numTable[15]="FIFTEEN ";
$numTable[16]="SIXTEEN ";
$numTable[17]="SEVENTEEN ";
$ numTable[18]="EIGHTEEN ";
$numTable[19]="NINETEEN ";
$numTable[20]="TWENTY ";
$numTable[30]="THIRTY ";
$numTable[40]="FORTY ";
$numTable[50]="FIFTY ";
$numTable[60]="SIXTY ";
$numTable[70]="SEVENTY ";
$numTable[80]="EIGHTY ";
$numTable[90]="NINETY ";
$commaTable[0]="HUNDRED ";
$commaTable[1] ="THOUSAND ";
$commaTable[2]="MILLION ";
$commaTable[3]="MILLIARD ";
$commaTable[4]="BILLION ";
$commaTable[ 5]="????";
//Unit
$moneyType["usd"]="DOLLARS ";
$moneyType["usd_1"]="CENTS ONLY" ;
$moneyType["rmb"]="YUAN ";
$moneyType["rmb_1"]="FEN ONLY";
if($type=="") $type="usd";
$fnum = fmoney($num);
$numArray = explode(",",$fnum);
$resultArray = array();
$k =0;
$cc=count($numArray);
for($i = 0; $i < count($numArray); $i++) {
$num_str = $numArray[$i ];
//echo "
";
//Decimal digit processing 400.21
if(eregi(".",$num_str)) {
$dotArray = explode(" .",$num_str);
if($dotArray[1] != 0) {
$resultArray[$k++]=format3num($dotArray[0]+0);
$resultArray[$ k++]=$moneyType[strtolower($type)];
$resultArray[$k++]="AND ";
$resultArray[$k++]=format3num($dotArray[1]+0);
$resultArray[$k++]=$moneyType[strtolower($type)."_1"];
} else {
$resultArray[$k++]=format3num($dotArray[0]+0);
$resultArray[$k++]=$moneyType[strtolower($type)];
}
} else {
//Processing of non-decimal digits
if(($num_str+0) !=0) {
$resultArray[$k++]=format3num($num_str+0);
$resultArray[$k++]=$commaTable[--$cc];
//Judgment: divide If the remainder other than the decimal is not zero, add and
for($j=$i; $j <= $cc; $j++) {
//echo "
";
/ /echo $numArray[$j];
if($numArray[$j] !=0) {
$resultArray[$k++]="AND ";
break;
}
}
}
}
}
return join("",$resultArray);
}
function format3num($num) {
global $numTable,$commaTable;
$numlen = strlen($num);
for($i = 0,$j = 0;$i < $numlen; $i++) {
$bitenum[$j++] = substr($num,$i,1);
}
if($num==0) return "";
if($numlen == 1) return $numTable[$num];
if($numlen == 2) {
if($num <= 20) return $numTable[$num];
//The first digit cannot be zero
if($bitenum[1]==0) {
return $numTable[$num];
} else {
return trim($numTable[$bitenum[0]*10]) ."-".$numTable[$bitenum[1]];
}
}
//The first one cannot be zero
if($numlen == 3) {
if($bitenum[1]==0 && $bitenum[2]==0) {
//100
return $numTable[$bitenum[0]].$commaTable[0];
} elseif($bitenum[1]==0) {
//102
return $numTable[$bitenum[0]].$commaTable[0].$numTable[$bitenum[2] ];
} elseif ($bitenum[2]==0) {
//120
return $numTable[$bitenum[0]].$commaTable[0].$numTable[$bitenum[ 1]*10];
} else {
//123
return $numTable[$bitenum[0]].$commaTable[0].trim($numTable[$bitenum[1]*10 ])."-".$numTable[$bitenum[2]];
}
}
return $num;
}
?>
http://www.bkjia.com/PHPjc/321844.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/321844.htmlTechArticleCopy the code as follows: ?php $num=1220.01; echo fmoney($num);//Result: 1,220.21 echo umoney($num); //Result: ONE THOUSAND AND TWO HUNDRED TWENTY DOLLARS AND TWENTY-ONE CENTS O...
Statement:The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn