PHP Slug Oluşturucu

PHP'de framework'lü veya framework'süz URL slugları oluşturun ve yayınlamadan önce tam çıktıyı burada görün. Laravel'de Str::slug() hazır gelir — üçüncü argüman olarak dili verin (Str::slug($baslik, "-", "tr")), yoksa "ı" ve "ş" yanlış eşlenir; bunu modelin creating olayına bağlayın ki her kayıt kendi slug'ını üretsin, slug sütununa da ->unique() ekleyin çünkü o index her sayfa görüntülemede sorgulanır. Düz PHP'de standart tarif iconv("UTF-8", "ASCII//TRANSLIT") + preg_replace ile alfanümerik olmayanları temizlemektir — ama iconv çıktısı sunucunun locale ayarına bağlıdır; "lokalde çalışıyor, canlıda bozuluyor" hatalarının klasik kaynağı budur ve aşağıdaki kod buna karşı korumalıdır. WordPress geliştiricileri yüzde-kodlamayı ve filtreleri de yöneten sanitize_title() fonksiyonunu tercih etmeli. Hangi yolu seçerseniz seçin: yayınlanmış bir URL'de başlık değişince slug'ı yeniden üretmeyin — 301 yönlendirme eklemeden tüm mevcut linkleri öldürürsünüz. Benzersizlik deseni: veritabanını döngüde kontrol edip -2, -3… ekleyin. Daha derin Laravel desenleri (trait'ler, Spatie Sluggable, route model binding) için blogdaki PHP & Laravel slug rehberimize bakın.

// Laravel
use Illuminate\Support\Str;
echo Str::slug('Merhaba Dünya', '-'); // merhaba-dunya

// Plain PHP (no framework)
function slugify(string $text): string {
    $text = iconv('UTF-8', 'ASCII//TRANSLIT', $text);
    $text = preg_replace('/[^a-zA-Z0-9]+/', '-', $text);
    return strtolower(trim($text, '-'));
}