Текстовый slugify (URL)
Професійний інструмент для текстового slugify, який нормалізує текст у зручні для URL слаги, підтримуючи перетворення на нижній регістр, користувацькі роздільники та видалення англійських стоп-слів. Використовує нормалізацію Unicode для обробки символів більшості мов, забезпечуючи, що згенеровані слаги відповідають найкращим практикам SEO. Ідеально для URL блогових дописів, імен файлів, ідентифікаторів баз даних та інших сценаріїв. Повністю обробляється локально для захисту вашої приватності — реєстрація не потрібна. Надає детальні рекомендації з використання та найкращих практик, допомагаючи згенерувати високоякісні слаги.
Навіщо використовувати Slugify?
🔍 Оптимізація SEO
Ключові слова в URL допомагають пошуковим системам зрозуміти зміст сторінки та покращують позиції в результатах пошуку. Наприклад, example.com/blog/how-to-learn-javascript ефективніший за example.com/blog/123.
👁️ Читабельність та поширення
Користувачі можуть негайно зрозуміти зміст за URL. Шляхи (slugs) краще поширюються в соціальних мережах та легше запам'ятовуються або вводяться вручну.
💻 Сумісність з системами
Запобігає помилкам, викликаним спеціальними символами в назвах файлів або URL. Забезпечує кросплатформну сумісність (Windows/Linux/macOS) та запобігає проблемам з кодуванням.
🗄️ Зручність для бази даних
Використовуються як унікальні ідентифікатори (наприклад, імена користувачів, теги), зменшують ризики SQL-ін'єкцій та покращують індексацію та продуктивність запитів.
Що таке Slugify?
Слаг — це скорочена, стандартизована версія тексту, що використовується як URL, ім'я файлу або ідентифікатор. Стандартна обробка включає нормалізацію регістру, видалення пунктуації та об'єднання слів роздільниками.
- Пріоритет ASCII: Видалити акценти та символи, залишити лише буквено-цифрові символи та пробіли
- Сумісність з Unicode: Нормалізувати символи більшості мов за допомогою NFKD перед обробкою
- Безпечно для URL: Вихід містить лише літери, цифри та роздільники — готовий до прямого використання в шляхах
Часті запитання
З: Як обробляються китайські символи?
А: За замовчуванням діакритики видаляються, а літери піньїню залишаються. Чистий китайський текст може бути порожнім; рекомендується вручну перетворити його на піньїнь перед slugізацією або використати інструмент для перетворення китайського тексту на піньїнь.
З: Чому результат порожній?
А: Ваше введення може складатися виключно з розділових знаків, символів або пробілів, або всі слова можуть бути видалені фільтром стоп-слів. Спробуйте вимкнути опцію стоп-слів або налаштувати введення.
З: Чи варто використовувати - чи _ як роздільник?
А: Для SEO використовуйте - (дефіс), оскільки Google розглядає його як пробіл; _ (підкреслення) розглядається як символ злиття, що заважає розділенню слів. Для назв файлів підходить будь-який варіант.
З: Чи є обмеження за довжиною для шляхів (slugs)?
А: Технічних обмежень немає, але рекомендується зберігати шляхи довжиною менше 50 символів для кращого відображення в URL та SEO. Надто довгі шляхи можуть бути обрізані пошуковими системами.
Найкращі практики
Рекомендовані практики
- ✓ Зробіть коротко (рекомендовано < 50 символів)
- ✓ Уникайте спеціальних символів; використовуйте лише літери, цифри та роздільники
- ✓ Використовуйте мали літери, щоб уникнути проблем з чутливістю до регістру
- ✓ Видаліть стоп-слова для підвищення семантичної щільності
Практики, яких потрібно уникати
- ✗ Не вмикайте чутливу інформацію (напр., ідентифікатори, електронні пошти, паролі)
- ✗ Не використовуйте спеціальні символи (напр., @#$%^&*)
- ✗ Не залишайте пробіли або послідовні роздільники
- ✗ Не повторюйте одне й те саме слово
Технічні деталі
Використовує розкладання NFKD + видалення сполучених діакритичних знаків (\p{M}), перетворюючи Café на Cafe. Підтримує більшість латинських символів.
Базується на поширених англійських словах (a/an/the/and/or/of/to/in/on/for/at/by/with); можна настроювати. Китайські стоп-слова потребують окремої обробки.
Потребує підтримки ES6+ та регулярних виразів Unicode (\p{...}). Підтримується в сучасних браузерах: Chrome 64+, Firefox 78+, Safari 11.1+.
Як згенерувати slug за допомогою мови програмування?
JavaScript
function slugify(text) {
return text
.toLowerCase()
.normalize("NFKD")
.replace(/[\u0300-\u036f]/g, "")
.replace(/[^\w\s-]/g, "")
.trim()
.replace(/[\s_-]+/g, "-")
.replace(/^-+|-+$/g, "");
}
PHP
function slugify($text) {
$text = mb_strtolower($text);
$text = iconv("UTF-8", "ASCII//TRANSLIT", $text);
$text = preg_replace("/[^\w\s-]/", "", $text);
$text = preg_replace("/[\s_-]+/", "-", $text);
return trim($text, "-");
}
Python
import re
import unicodedata
def slugify(text):
text = text.lower()
text = unicodedata.normalize("NFKD", text)
text = text.encode("ascii", "ignore").decode("ascii")
text = re.sub(r"[^\w\s-]", "", text)
text = re.sub(r"[\s_-]+", "-", text)
return text.strip("-")
Go
import (
"regexp"
"strings"
"golang.org/x/text/unicode/norm"
)
func Slugify(text string) string {
text = strings.ToLower(text)
text = norm.NFKD.String(text)
re := regexp.MustCompile(`[^\w\s-]`)
text = re.ReplaceAllString(text, "")
re = regexp.MustCompile(`[\s_-]+`)
text = re.ReplaceAllString(text, "-")
return strings.Trim(text, "-")
}
Ruby
require "unicode"
def slugify(text)
text = text.downcase
text = Unicode.nfkd(text).gsub(/[^\x00-\x7F]/, "")
text = text.gsub(/[^\w\s-]/, "")
text = text.gsub(/[\s_-]+/, "-")
text.strip.gsub(/^-+|-+$/, "")
end
Java
import java.text.Normalizer;
public static String slugify(String text) {
text = text.toLowerCase();
text = Normalizer.normalize(text, Normalizer.Form.NFKD);
text = text.replaceAll("[^\\w\\s-]", "");
text = text.replaceAll("[\\s_-]+", "-");
return text.replaceAll("^-+|-+$", "");
}