Table of contents
Konversi Mata Uang Menjadi Teks dengan PHP dan API - Dalam dunia digital, pengolahan data angka sering kali menjadi kebutuhan utama, terutama dalam aplikasi yang melibatkan laporan keuangan, faktur, atau sistem transaksi. Salah satu fitur penting dalam hal ini adalah kemampuan untuk mengubah angka menjadi teks (terbilang), baik dalam bahasa Indonesia maupun Inggris, dengan tambahan kemampuan konversi mata uang secara otomatis. Artikel ini akan menjelaskan solusi tersebut menggunakan PHP. Baca juga post saya kemarin tentang Cara Dinamis Mengubah Angka ke Teks Terbilang dalam Mata Uang Rupiah
Mengapa Fungsi Terbilang Dibutuhkan?
Fungsi terbilang digunakan untuk mengubah angka numerik menjadi teks. Contoh sederhana adalah angka 100, yang dapat diubah menjadi “seratus rupiah” dalam bahasa Indonesia atau “one hundred dollars” dalam bahasa Inggris. Fungsi ini sangat bermanfaat untuk:
Meningkatkan Kejelasan Laporan: Teks yang menjelaskan angka sering kali lebih mudah dipahami, terutama dalam dokumen resmi.
Mendukung Beragam Bahasa dan Mata Uang: Layanan global membutuhkan fleksibilitas dalam menampilkan nilai dalam berbagai format mata uang.
Solusi yang Ditawarkan
Solusi ini menggabungkan dua fitur utama:
Konversi Mata Uang Otomatis
Menggunakan API kurs mata uang, angka dalam satu mata uang dapat secara otomatis diubah menjadi mata uang lain sebelum diproses lebih lanjut.
Mengubah Angka Menjadi Teks
Setelah dikonversi, angka tersebut diterjemahkan menjadi teks dengan format sesuai bahasa dan mata uang yang diinginkan.
Implementasi dalam PHP
Solusi ini melibatkan tiga langkah utama:
Mengambil Kurs Mata Uang
Kurs mata uang diambil menggunakan API pihak ketiga seperti ExchangeRate API. Data ini memungkinkan konversi otomatis dari satu mata uang ke mata uang lain.
function fetchExchangeRate($fromCurrency, $toCurrency) {
$apiUrl = "https://api.exchangerate-api.com/v4/latest/$fromCurrency"; // URL API
$response = file_get_contents($apiUrl);
if ($response === false) {
return null; // Gagal mengambil data
}
$data = json_decode($response, true);
if (!isset($data['rates'][$toCurrency])) {
return null; // Kurs tidak ditemukan
}
return $data['rates'][$toCurrency];
}
Mengonversi Mata Uang
Nilai angka dikalikan dengan kurs untuk mendapatkan hasil konversi.
function convertCurrency($amount, $fromCurrency, $toCurrency) {
$rate = fetchExchangeRate($fromCurrency, $toCurrency);
if ($rate === null) {
return null; // Gagal konversi
}
return $amount * $rate;
}
Fungsi Terbilang
Fungsi ini menerjemahkan angka menjadi teks dengan fleksibilitas dalam bahasa dan format mata uang.
function terbilang($angka, $lang = 'id', $currency = 'rupiah') {
$angka = abs($angka);
// Definisi teks angka dalam bahasa Indonesia dan Inggris
$numbers = [
'id' => ["", "satu", "dua", "tiga", "empat", "lima", "enam", "tujuh", "delapan", "sembilan", "sepuluh", "sebelas"],
'en' => ["", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven"]
];
$tens = [
'id' => ["", "sepuluh", "dua puluh", "tiga puluh", "empat puluh", "lima puluh", "enam puluh", "tujuh puluh", "delapan puluh", "sembilan puluh"],
'en' => ["", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"]
];
$currencyNames = [
'id' => [
'rupiah' => 'rupiah',
'dollar' => 'dolar',
'euro' => 'euro'
],
'en' => [
'rupiah' => 'rupiah',
'dollar' => 'dollar',
'euro' => 'euro'
]
];
if (!isset($numbers[$lang]) || !isset($tens[$lang])) {
return "Language not supported.";
}
$huruf = $numbers[$lang];
$puluhan = $tens[$lang];
$currencyText = $currencyNames[$lang][$currency] ?? $currency;
// Aturan terbilang
if ($angka < 12) {
return $huruf[$angka] . " " . $currencyText;
} elseif ($angka < 20) {
return $huruf[$angka - 10] . ($lang === 'id' ? " belas" : "teen") . " " . $currencyText;
} elseif ($angka < 100) {
return $puluhan[floor($angka / 10)] . ($angka % 10 > 0 ? " " . $huruf[$angka % 10] : "") . " " . $currencyText;
} elseif ($angka < 200) {
return ($lang === 'id' ? "seratus" : "one hundred") . " " . terbilang($angka % 100, $lang, $currency);
} elseif ($angka < 1000) {
return $huruf[floor($angka / 100)] . ($lang === 'id' ? " ratus " : " hundred ") . terbilang($angka % 100, $lang, $currency);
} elseif ($angka < 1000000) {
return terbilang(floor($angka / 1000), $lang, $currency) . ($lang === 'id' ? " ribu " : " thousand ") . terbilang($angka % 1000, $lang, $currency);
} elseif ($angka < 1000000000) {
return terbilang(floor($angka / 1000000), $lang, $currency) . ($lang === 'id' ? " juta " : " million ") . terbilang($angka % 1000000, $lang, $currency);
} elseif ($angka < 1000000000000) {
return terbilang(floor($angka / 1000000000), $lang, $currency) . ($lang === 'id' ? " miliar " : " billion ") . terbilang($angka % 1000000000, $lang, $currency);
} elseif ($angka < 1000000000000000) {
return terbilang(floor($angka / 1000000000000), $lang, $currency) . ($lang === 'id' ? " triliun " : " trillion ") . terbilang($angka % 1000000000000, $lang, $currency);
}
return "Out of range";
}
Menggabungkan Semua Fitur
Fungsi utama mengintegrasikan seluruh proses dari konversi mata uang hingga teks terbilang.
function formatDanTerbilang($angka, $fromCurrency = 'USD', $toCurrency = 'IDR', $lang = 'id', $currency = 'rupiah') {
$convertedAmount = convertCurrency($angka, $fromCurrency, $toCurrency);
if ($convertedAmount === null) {
return "Failed to convert currency.";
}
$formattedCurrency = number_format($convertedAmount, 0, ',', '.');
$terbilangText = terbilang($convertedAmount, $lang, $currency);
return [
'formatted' => $formattedCurrency,
'terbilang' => $terbilangText
];
}
Contoh Penggunaan
Misalkan, Anda ingin mengubah angka 100 USD menjadi teks dalam format Rupiah:
$result = formatDanTerbilang(100, 'USD', 'IDR', 'id', 'rupiah');
print_r($result);
Hasil yang diperoleh:
Array ( [formatted] => 1.622.157 [terbilang] => satu rupiah juta enam ratus dua puluh dua rupiah ribu seratus lima puluh tujuh rupiah )
Lihat hasil penerapan kode diatas pada link demo ini.
Baca juga: Membuat Konversi Mata Uang Otomatis dengan PHP
Keunggulan Solusi
Fleksibilitas Bahasa dan Mata Uang
Sistem mendukung berbagai kombinasi bahasa dan mata uang untuk memenuhi kebutuhan global.
Otomatisasi Penuh
Konversi mata uang dilakukan secara otomatis menggunakan API, sehingga mengurangi kesalahan manual.
Kemudahan Implementasi
Solusi ini dirancang untuk mudah diintegrasikan ke dalam aplikasi PHP.
Kesimpulan
Mengubah angka menjadi teks terbilang, ditambah dengan kemampuan konversi mata uang otomatis, memberikan fleksibilitas dan kejelasan dalam pengolahan data angka. Dengan solusi berbasis PHP ini, pengembang dapat menciptakan aplikasi yang lebih cerdas dan user-friendly, terutama dalam konteks keuangan dan transaksi.
Implementasikan solusi ini pada proyek Anda untuk memberikan pengalaman pengguna yang lebih baik!