note 83852 added to function.number-format
| From: | isapoetra at gmail dot com | Date: | Sun, 15 Jun 2008 13:53:47 +0000 |
| Subject: | note 83852 added to function.number-format | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-140473@lists.php.net to get a copy of this message | ||
here is the code to convert number to Indonesian text, this code has limitation as is number_format
function. sorry for this.
/*
* Created : Iwan Sapoetra - Jun 13, 2008
* Project : Web
* Package : cgaf
*
*/
function terbilang( $num ,$dec=4){
$stext = array(
"Nol",
"Satu",
"Dua",
"Tiga",
"Empat",
"Lima",
"Enam",
"Tujuh",
"Delapan",
"Sembilan",
"Sepuluh",
"Sebelas"
);
$say = array(
"Ribu",
"Juta",
"Milyar",
"Triliun",
"Biliun", // remember limitation of float
"--apaan---" ///setelah biliun namanya apa?
);
$w = "";
if ($num <0 ) {
$w = "Minus ";
//make positive
$num *= -1;
}
$snum = number_format($num,$dec,",",".");
die($snum);
$strnum = explode(".",substr($snum,0,strrpos($snum,",")));
//parse decimalnya
$koma = substr($snum,strrpos($snum,",")+1);
$isone = substr($num,0,1) ==1;
if (count($strnum)==1) {
$num = $strnum[0];
switch (strlen($num)) {
case 1:
case 2:
if (!isset($stext[$strnum[0]])){
if($num<19){
$w .=$stext[substr($num,1)]." Belas";
}else{
$w .= $stext[substr($num,0,1)]." Puluh ".
(intval(substr($num,1))==0 ? "" : $stext[substr($num,1)]);
}
}else{
$w .= $stext[$strnum[0]];
}
break;
case 3:
$w .= ($isone ? "Seratus" : terbilang(substr($num,0,1)) .
" Ratus").
" ".(intval(substr($num,1))==0 ? "" : terbilang(substr($num,1)));
break;
case 4:
$w .= ($isone ? "Seribu" : terbilang(substr($num,0,1)) .
" Ribu").
" ".(intval(substr($num,1))==0 ? "" : terbilang(substr($num,1)));
break;
default:
break;
}
}else{
$text = $say[count($strnum)-2];
$w = ($isone && strlen($strnum[0])==1 && count($strnum) <=3?
"Se".strtolower($text) : terbilang($strnum[0]).' '.$text);
array_shift($strnum);
$i =count($strnum)-2;
foreach ($strnum as $k=>$v) {
if (intval($v)) {
$w.= ' '.terbilang($v).' '.($i >=0 ? $say[$i] : "");
}
$i--;
}
}
$w = trim($w);
if ($dec = intval($koma)) {
$w .= " Koma ". terbilang($koma);
}
return trim($w);
}
//example
echo terbilang(999999999999)."\n";
/**
* result : Sembilan Ratus Sembilan Puluh Sembilan Milyar Sembilan Ratus Sembilan Puluh Sembilan
Juta Sembilan Ratus Sembilan Puluh Sembilan Ribu Sembilan Ratus Sembilan Puluh Sembilan
*/
echo terbilang(9999999999999999);
/**
* todo : fix this bug pleasese
* problem : number_format(9999999999999999) <--- 10.000.000.000.000.000,0000
* Result : Sepuluh Biliun
*/
----
Server IP: 202.158.52.162
Probable Submitter: 221.132.208.114
----
Manual Page -- http://www.php.net/manual/en/function.number-format.php
Edit -- https://master.php.net/note/edit/83852
Del: integrated -- https://master.php.net/note/delete/83852/integrated
Del: useless -- https://master.php.net/note/delete/83852/useless
Del: bad code -- https://master.php.net/note/delete/83852/bad+code
Del: spam -- https://master.php.net/note/delete/83852/spam
Del: non-english -- https://master.php.net/note/delete/83852/non-english
Del: in docs -- https://master.php.net/note/delete/83852/in+docs
Del: other reasons-- https://master.php.net/note/delete/83852
Reject -- https://master.php.net/note/reject/83852
Search -- https://master.php.net/manage/user-notes.php