Усі статті

Slugify: як перетворити довільний текст на URL-адресу

URL-адреса має обмежений набір «безпечних» символів: латинські літери, цифри, дефіс і кілька інших знаків. Slug — це перетворена версія довільного тексту (наприклад, заголовка статті), яка вписується в ці обмеження й водночас лишається читабельною для людини.

Що робить перетворення на slug

  • Приводить усі літери до нижнього регістру.
  • Замінює пробіли та розділові знаки на дефіси.
  • Транслітерує або видаляє символи поза базовою латиницею (наприклад, кирилицю чи діакритичні знаки).
  • Прибирає повторювані дефіси й дефіси на початку та в кінці рядка.

Наприклад, заголовок «Привіт, Світ! Як справи?» перетворюється на щось на кшталт pryvit-svit-yak-spravy.

Чому просто URL-encode не підходить

Percent-encoding (наприклад, %D0%9F%D1%80%D0%B8%D0%B2%D1%96%D1%82 для кирилиці) технічно валідний в URL, але нечитабельний для людини і виглядає ненадійно в адресному рядку чи при копіюванні посилання. Slug вирішує саме проблему читабельності, а не лише технічної валідності.

Навіщо це потрібно

  • Автоматично генерувати URL-адресу статті блогу з її заголовка.
  • Створити читабельний ідентифікатор із назви продукту для інтернет-магазину.
  • Сформувати ім’я файлу чи CSS-клас із довільного тексту, уникнувши недопустимих символів.

Колізії: коли різні заголовки дають однаковий slug

Заголовки «Привіт, світ!» і «привіт світ» після нормалізації (нижній регістр, видалення пунктуації) перетворяться на той самий slug pryvit-svit, хоча вихідні тексти різні. Якщо slug використовується як унікальний ідентифікатор (наприклад, у URL статті), таку колізію потрібно вирішувати додатково — типово додаванням числового суфікса чи ID до дублікату.

Спробувати інструмент