Base62 encoding di PHP umumnya digunakan untuk memperpendek string, URL, atau mengonversi angka ID database yang panjang menjadi karakter yang lebih ringkas menggunakan kombinasi huruf besar, huruf kecil, dan angka (a-z, A-Z, 0-9). Karena PHP tidak memiliki fungsi bawaan seperti base62_encode(), Anda perlu membuat fungsi kustom atau memanfaatkan pustaka pihak ketiga.
Implementasi manual tanpa ekstensi eksternal dapat dilakukan menggunakan fungsi matematika konversi basis atau pustaka eksternal melalui Composer seperti tuupola/base62 untuk performa produksi yang lebih optimal.
Fungsi Kustom Base62 Encode & Decode di PHP
Berikut adalah contoh kode murni PHP untuk melakukan konversi angka desimal (seperti ID auto-increment database) ke Base62 dan sebaliknya.
<?php
class Base62 {
private static $alphabet = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
public static function encode($data): string {
if ($data === 0) {
return self::$alphabet[0];
}
$encoded = '';
while ($data > 0) {
$remainder = $data % 62;
$encoded = self::$alphabet[$remainder] . $encoded;
$data = (int)($data / 62);
}
return $encoded;
}
public static function decode(string $string): int {
$result = 0;
$len = strlen($string);
for ($i = 0; $i < $len; $i++) {
$result = $result * 62 + strpos(self::$alphabet, $string[$i]);
}
return $result;
}
}
// Contoh Penggunaan:
$originalId = 123456789;
$encoded = Base62::encode($originalId);
$decoded = Base62::decode($encoded);
echo "Asli: $originalId <br>";
echo "Encode: $encoded <br>";
echo "Decode: $decoded";
?>
Metode Alternatif Menggunakan Composer
Untuk kebutuhan aplikasi skala besar yang melibatkan string teks secara umum (bukan hanya angka), menggunakan pustaka eksternal yang teruji adalah pilihan terbaik.
| Metode | Kelebihan | Kekurangan |
|---|---|---|
| Fungsi Kustom (Matematika) | Tanpa instalasi dependensi, ringan, sangat cepat untuk angka ID. | Hanya mendukung konversi angka bulat (integer). |
| Pustaka Composer (cth: tuupola/base62) | Mendukung string biner/teks, teruji, kompatibel dengan standar RFC. | Membutuhkan manajer paket Composer dan tambahan memori kecil. |
Langkah Instalasi Pustaka Eksternal
- Buka terminal pada direktori proyek PHP Anda.
- Jalankan perintah instalasi Composer:
composer require tuupola/base62 - Sertakan autoloader pada skrip PHP Anda:
require 'vendor/autoload.php'; - Gunakan namespace yang disediakan oleh pustaka tersebut untuk encode dan decode.
Troubleshooting Umum
Jika hasil decode tidak sesuai atau menghasilkan error, pastikan karakter yang dimasukkan hanya berada dalam rentang alfabet Base62 (0-9, a-z, A-Z). Karakter spesial atau spasi akan menyebabkan fungsi gagal membaca posisi indeks pada string alfabet.