Транслитерация текста в слаг (URL)

Профессиональный инструмент для создания слагонов, который нормализует текст в удобные для URL строки. Поддерживает перевод в нижний регистр, пользовательские разделители и удаление стоп-слов английского языка. Использует нормализацию Unicode для обработки символов большинства языков, гарантируя соответствие генерируемых слагонов лучшим практикам SEO. Идеально подходит для URL статей блога, именования файлов, идентификаторов баз данных и других задач. Полностью обрабатывается локально для защиты вашей конфиденциальности — регистрация не требуется. Предоставляет подробные инструкции по использованию и рекомендации по лучшим практикам для создания высококачественных слагонов.

Параметры и ввод

Рекомендуется: используйте - или _, длина 1–3 символа

Результат

Зачем использовать транслитерацию в слаги?

🔍 SEO-оптимизация

Ключевые слова в URL помогают поисковым системам понимать содержание страницы и улучшать её ранжирование. Например, example.com/blog/how-to-learn-javascript эффективнее, чем example.com/blog/123.

👁️ Читаемость и шеринг

Пользователи мгновенно понимают содержание по URL. Слаг проще делиться в соцсетях, его легче запомнить или ввести вручную.

💻 Совместимость с системами

Избегайте ошибок из-за специальных символов в именах файлов или URL. Обеспечивает кроссплатформенную совместимость (Windows/Linux/macOS) и предотвращает проблемы с кодировкой.

🗄️ Дружелюбность к БД

Используйте как уникальные идентификаторы (например, имена пользователей, теги), чтобы снизить риски SQL-инъекций и улучшить индексацию и производительность запросов.

Что такое слаг?

Слаг — это сокращенная, стандартизированная версия текста, используемая как URL, имя файла или идентификатор. Типичная обработка включает унификацию регистра, удаление знаков препинания и соединение слов разделителями.

  • Приоритет ASCII: удаляет диакритические знаки и символы, оставляя только буквенно-цифровые символы и пробелы
  • Поддержка Unicode: нормализует символы большинства языков с помощью NFKD перед обработкой
  • Безопасность для URL: выходной содержит только буквы, цифры и разделители — готов к прямому использованию в путях

Примеры использования

URL записей блога

Как изучить JavaScript?

kak-izuchit-javascript

Именование файлов

Требования к продукту v2.0.docx

trebovaniya-k-produktu-v2-0.docx

Идентификатор БД

Пользователь-Чжан Сань

polzovatel-chzhan-san

Часто задаваемые вопросы

В: Как обрабатываются китайские иероглифы?

О: По умолчанию диакритические знаки удаляются, а латинские буквы пиньинь сохраняются. Чисто китайский текст может стать пустым; рекомендуется предварительно конвертировать его в пиньинь перед генерацией слага или использовать инструмент для конвертации китайского пиньиня.

В: Почему результат пустой?

О: Ваш ввод может состоять исключительно из знаков препинания, символов или пробелов, либо все слова были удалены фильтром стоп-слов. Попробуйте отключить опцию стоп-слов или изменить ввод.

В: Что использовать в качестве разделителя: - или _ ?

О: Для SEO используйте дефис (-), так как Google воспринимает его как пробел; нижнее подчёркивание (_) трактуется как символ соединения слов, что мешает их раздельному распознаванию. Для имён файлов допустимы оба варианта.

В: Есть ли ограничение на длину слага?

О: Технического ограничения нет, но рекомендуется сохранять слаг короче 50 символов для лучшего отображения в URL и SEO. Слишком длинные слаги могут быть обрезаны поисковыми системами.

Лучшие практики

Рекомендуемые практики

  • ✓ Делайте коротко (рекомендуется < 50 символов)
  • ✓ Избегайте специальных символов; используйте только буквы, цифры и разделители
  • ✓ Используйте строчные буквы, чтобы избежать проблем с регистром
  • ✓ Удаляйте стоп-слова для повышения семантической плотности

Чего следует избегать

  • ✗ Не включайте конфиденциальную информацию (например, ID, адреса электронной почты, пароли)
  • ✗ Не используйте специальные символы (например, @#$%^&*)
  • ✗ Не оставляйте пробелы или последовательные разделители
  • ✗ Не повторяйте одно и то же слово

Технические детали

Нормализация Unicode:

Использует разложение 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("^-+|-+$", "");
}