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:
getPenyebut: Fokus pada logika konversi angka ke teks.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 dicomposer.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!