Cara Membuat Fungsi PHP untuk Penyebut Rupiah dalam Bahasa Indonesia

Mengubah angka menjadi teks dalam format Rupiah sering diperlukan untuk aplikasi seperti laporan keuangan atau kwitansi digital. Dalam artikel ini, kita akan membuat fungsi PHP untuk mengonversi nominal angka menjadi format terbilang dalam bahasa Indonesia.

Mengapa Membuat Fungsi Penyebut?

Fungsi penyebut memungkinkan Anda mengubah angka menjadi teks, seperti:

  • Angka: 1500000
  • Teks Terbilang: "satu juta lima ratus ribu"

Dengan fungsi custom ini, Anda tidak perlu menulis logika konversi berulang kali di berbagai tempat.

Kode Fungsi PHP untuk Penyebut Rupiah

Berikut adalah fungsi getPenyebut dan getTerbilang yang bisa Anda gunakan.

1. Fungsi Penyebut

Fungsi ini bertugas mengonversi angka menjadi teks dalam bahasa Indonesia.

<?php 
if (!function_exists('getPenyebut')) {
    function getPenyebut($number)
    {
        $result = "";
        $number = strval($number);
        if (!preg_match("/^[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");
        $length         = strlen($number);
        $isAnyMajorUnit = false;

        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].' ';
                } elseif ($pos % 3 == 1 && $number[$i + 1] != '0') {
                    if ($number[$i + 1] == '1') {
                        $result .= "sebelas ";
                    } else {
                        $result .= $ones[$number[$i + 1]]." belas ";
                    }
                    $i++;
                    $pos--;
                } elseif ($pos % 3 != 0) {
                    $result .= "se".$minorUnits[$pos % 3].' ';
                } elseif ($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;
    }
}
2. Fungsi Terbilang

Fungsi ini menambahkan logika untuk menangani angka negatif dan memberikan hasil akhir.

<?php 
if (!function_exists('getTerbilang')) {
    function getTerbilang($nilai)
    {
        if ($nilai < 0) {
            $hasil = "minus ". trim(getPenyebut(abs($nilai)));
        } else {
            $hasil = trim(getPenyebut($nilai));
        }
        return $hasil;
    }
}
Contoh Penggunaan

Gunakan fungsi getTerbilang untuk berbagai keperluan seperti format laporan atau tampilan aplikasi.

<?php 
// Contoh 1: Angka positif
echo getTerbilang(1500000); 
// Output: satu juta lima ratus ribu

// Contoh 2: Angka negatif
echo getTerbilang(-75000); 
// Output: minus tujuh puluh lima ribu

// Contoh 3: Angka nol
echo getTerbilang(0); 
// Output: nol
Manfaat Memisahkan Logika

Dengan memisahkan logika, fungsi menjadi lebih modular:

  1. getPenyebut: Fokus pada logika konversi angka ke teks.
  2. getTerbilang: Fokus pada penyesuaian tambahan seperti menangani angka negatif.
Mengintegrasikan ke Proyek

Fungsi getRupiah ini dapat dimasukkan ke dalam proyek PHP Anda, baik di dalam file utilitas seperti helpers.php atau langsung diimplementasikan dalam script.

1. Menambah ke Helper PHP

Jika Anda menggunakan framework seperti CodeIgniter atau Laravel, letakkan fungsi ini di file helper:

  • Laravel: Tambahkan di file app/helpers.php, lalu autoload di composer.json.
  • CodeIgniter: Letakkan di file application/helpers.

Implementasi fungsi custom getPenyebut dan getTerbilang pada Laravel dan CodeIgniter cukup mudah dilakukan melalui helper. Anda dapat memanfaatkan fungsi ini di berbagai tempat dalam aplikasi untuk memformat nominal angka ke dalam teks Rupiah secara dinamis.

Anda dapat memanfaatkan fungsi ini di berbagai tempat dalam aplikasi untuk memformat nominal angka ke dalam teks Rupiah secara dinamis. Semoga bermanfaat! 

Komentar