Terbilang

Berikut adalah sebuah fungsi PHP yang menerima suatu angka dan memberikan bentuk terbilang dalam bahasa Indonesia dari angka tersebut:


<?php
/**
* Indonesian number speller (PHP 4 or greater)
*
* @param string $number a string representing a positive, integral number with 15 digits or less
* @return string|false the spelled out number in Indonesian, or false if the number is invalid
* @author {@link http://www.lesantoso.com Lucky E. Santoso} <lesantoso@yahoo.com>
* @copyright Copyright (c) 2006 Lucky E. Santoso
* @license http://opensource.org/licenses/gpl-license.php The GNU General Public License (GPL)
*/  
function spellNumberInIndonesian ($number) {
	$number = strval($number);
	if (!ereg("^[0-9]{1,15}$", $number)) 
		return(false); 
	$ones = array("", "satu", "dua", "tiga", "empat", 
		"lima", "enam", "tujuh", "delapan", "sembilan");
	$majorUnits = array("", "ribu", "juta", "milyar", "trilyun");
	$minorUnits = array("", "puluh", "ratus");
	$result = "";
	$isAnyMajorUnit = false;
	$length = strlen($number);
	for ($i = 0, $pos = $length - 1; $i < $length; $i++, $pos--) {
		if ($number{$i} != '0') {
			if ($number{$i} != '1')
				$result .= $ones[$number{$i}].' '.$minorUnits[$pos % 3].' ';
			else if ($pos % 3 == 1 && $number{$i + 1} != '0') {
				if ($number{$i + 1} == '1') 
					$result .= "sebelas "; 
				else 
					$result .= $ones[$number{$i + 1}]." belas ";
				$i++; $pos--;
			} else if ($pos % 3 != 0)
				$result .= "se".$minorUnits[$pos % 3].' ';
			else if ($pos == 3 && !$isAnyMajorUnit)
				$result .= "se";
			else
				$result .= "satu ";
			$isAnyMajorUnit = true;
		}
		if ($pos % 3 == 0 && $isAnyMajorUnit) {
			$result .= $majorUnits[$pos / 3].' ';
			$isAnyMajorUnit = false;
		}
	}
	$result = trim($result);
	if ($result == "") $result = "nol";
	return($result);
}
?>

See also: Indonesian Numbers (memakai fungsi ini)

2 Comments to “Terbilang”

  1. firman Says:

    cool, usefull function, sepintas adaptasi dari english, but there’s big different between do it and not do it. Sekali lagi top deh buat Mr. Luke ini :)

  2. Andang Prananindya Says:

    Toooppppp abiiisssss!!!!
    Toppppppp tenaaaannn !!!!
    Pokokeeee Top !!!!!!

    Salut buat Koh Lucky . . . . atas sharing ilmunya . .

    Kapan kita maen “Duke Nukem” online lageeee ????????

Leave a Comment