Implementasi Slugify PHP ke MySQL: Panduan Teknis & Optimasi

Konsep Dasar Slugify dalam PHP

Slug adalah bagian dari URL yang ramah mesin pencari (SEO-friendly) dan mudah dibaca manusia, biasanya berupa versi string yang diubah menjadi huruf kecil, tanpa spasi, dan tanpa karakter khusus. Dalam ekosistem PHP, proses ini melibatkan pembersihan string (sanitization) sebelum disimpan ke dalam kolom database MySQL.

Implementasi Fungsi Slugify

Untuk menghasilkan slug yang konsisten, gunakan fungsi str_replace atau preg_replace untuk menangani karakter non-alfanumerik. Berikut adalah implementasi fungsi PHP yang efisien:

function createSlug($string) {
    $string = strtolower(trim($string));
    $string = preg_replace('/[^a-z0-9-]+/', '-', $string);
    $string = preg_replace('/-+/', '-', $string);
    return trim($string, '-');
}

Langkah Integrasi ke MySQL

  1. Persiapan Database: Pastikan kolom slug di MySQL memiliki tipe data VARCHAR(255) dengan indeks UNIQUE untuk mencegah duplikasi URL.
  2. Sanitasi Input: Selalu gunakan prepared statements (PDO atau MySQLi) untuk mencegah SQL Injection saat menyimpan slug.
  3. Verifikasi Unik: Jika slug sudah ada di database, tambahkan angka unik di belakang slug (misal: judul-artikel-1).
LangkahTindakan TeknisTujuan
Sanitasistrtolower & preg_replaceStandarisasi format URL
PenyimpananPrepared StatementsKeamanan data (SQL Injection)
IndexingUNIQUE INDEXOptimasi pencarian & integritas
ValidasiCek SELECT COUNT(*)Mencegah duplikasi URL

Optimasi Performa Query

Saat melakukan pencarian berdasarkan slug, pastikan kolom tersebut telah diindeks. Query pencarian yang disarankan:

$stmt = $pdo->prepare("SELECT * FROM posts WHERE slug = :slug LIMIT 1");
$stmt->execute(['slug' => $slug]);
$post = $stmt->fetch();

Tips Troubleshooting

  • Karakter Non-ASCII: Jika slug mengandung karakter multibyte (seperti aksara non-latin), gunakan fungsi iconv('UTF-8', 'ASCII//TRANSLIT', $string) sebelum melakukan regex.
  • Panjang Slug: Batasi panjang slug maksimal 255 karakter untuk menjaga kompatibilitas dengan indeks MySQL.
  • Trailing Slashes: Konsistenlah dalam penggunaan garis miring di akhir URL melalui konfigurasi .htaccess atau routing framework.