note 83852 added to function.number-format

From: 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

« previous php.notes (#140473) next »