format("d-m-Y"); } public static function terbilangBm(int $number): string { $units = [ 0 => 'kosong', 1 => 'satu', 2 => 'dua', 3 => 'tiga', 4 => 'empat', 5 => 'lima', 6 => 'enam', 7 => 'tujuh', 8 => 'lapan', 9 => 'sembilan', 10 => 'sepuluh', 11 => 'sebelas' ]; if ($number < 0) return 'negatif ' . self::terbilangBm(abs($number)); if ($number < 12) return $units[$number]; if ($number < 20) return self::terbilangBm($number - 10) . ' belas'; if ($number < 100) { $tens = intdiv($number, 10); $rest = $number % 10; return self::terbilangBm($tens) . ' puluh' . ($rest ? ' ' . self::terbilangBm($rest) : ''); } if ($number < 200) return 'seratus' . ($number > 100 ? ' ' . self::terbilangBm($number - 100) : ''); if ($number < 1000) { $hundreds = intdiv($number, 100); $rest = $number % 100; return self::terbilangBm($hundreds) . ' ratus' . ($rest ? ' ' . self::terbilangBm($rest) : ''); } if ($number < 2000) return 'seribu' . ($number > 1000 ? ' ' . self::terbilangBm($number - 1000) : ''); if ($number < 1000000) { $thousands = intdiv($number, 1000); $rest = $number % 1000; return self::terbilangBm($thousands) . ' ribu' . ($rest ? ' ' . self::terbilangBm($rest) : ''); } if ($number < 1000000000) { $millions = intdiv($number, 1000000); $rest = $number % 1000000; return self::terbilangBm($millions) . ' juta' . ($rest ? ' ' . self::terbilangBm($rest) : ''); } return 'terlalu besar'; } public static function ringgitTerbilang($amount, bool $tambahSahaja = true): string { $formatted = number_format((float)$amount, 2, '.', ''); [$ringgitStr, $senStr] = explode('.', $formatted); $ringgit = (int)$ringgitStr; $sen = (int)$senStr; $parts = []; $parts[] = self::terbilangBm($ringgit) . ' ringgit'; if ($sen > 0) { $parts[] = 'dan ' . self::terbilangBm($sen) . ' sen'; } elseif ($tambahSahaja) { $parts[] = 'sahaja'; } return trim(preg_replace('/\s+/', ' ', implode(' ', $parts))); } }