Wszystkie artykuły

Slugify: jak zamienić dowolny tekst w adres URL

Polski alfabet ma dziewięć liter z własnymi znakami diakrytycznymi (ą, ć, ę, ł, ń, ó, ś, ź, ż), z których każda niesie osobną wartość fonetyczną. Slug zwykle sprowadza je do najbliższego odpowiednika bez ogonka czy kreski — ł staje się l, ż i ź stają się nierozróżnialnym z, co w praktyce oznacza, że słowa takie jak „żyto” i „zyto” (nieistniejące, ale technicznie różne od „żyto” bez ogonka) po normalizacji stają się nie do odróżnienia.

Co robi konwersja na slug

  • Zamienia wszystkie litery na małe.
  • Zamienia spacje i znaki interpunkcyjne na myślniki.
  • Transliteruje polskie znaki diakrytyczne do najbliższego odpowiednika łacińskiego lub usuwa inne znaki spoza podstawowej łaciny.
  • Zwija powtarzające się myślniki i usuwa myślniki na początku i końcu ciągu.

Na przykład tytuł „Witaj, Świecie! Jak się masz?" zamienia się w coś w rodzaju witaj-swiecie-jak-sie-masz.

Dlaczego zwykłe URL-encode nie wystarcza

Percent-encoding (np. %C4%99 dla „ę") jest technicznie poprawny w URL, ale nieczytelny dla człowieka i wygląda niewiarygodnie w pasku adresu lub przy udostępnianiu linku. Slug rozwiązuje właśnie problem czytelności, nie tylko technicznej poprawności.

Do czego się przydaje

  • Automatyczne generowanie adresu URL polskiego wpisu na blogu z jego tytułu.
  • Tworzenie czytelnego identyfikatora z nazwy produktu dla sklepu internetowego.
  • Formowanie nazwy pliku lub klasy CSS z dowolnego tekstu, unikając niedozwolonych znaków.

Kolizje: gdy różne tytuły dają taki sam slug

Tytuły „Cześć, świecie!" i „cześć świecie" po normalizacji (małe litery, usunięcie interpunkcji) zamienią się na ten sam slug czesc-swiecie, mimo że teksty źródłowe są różne. Jeśli slug jest używany jako unikalny identyfikator (np. w URL artykułu), taką kolizję trzeba rozwiązać dodatkowo — zwykle poprzez dodanie liczbowego sufiksu lub ID do duplikatu.

Wypróbuj narzędzie