Převod textu na slug (URL)
Profesionální nástroj pro převod textu na slug, který normalizuje text na slugi vhodné pro URL. Podporuje převod na malá písmena, vlastní oddělovače a odstraňování anglických stop slov. Využívá normalizaci Unicode pro zpracování znaků většiny jazyků, čímž zajistí, že vygenerované slugi dodržují osvědčené postupy pro SEO. Ideální pro adresy URL blogových příspěvků, pojmenování souborů, identifikátory v databázích a další scénáře. Veškeré zpracování probíhá lokálně pro ochranu vašeho soukromí – není nutná registrace. Poskytuje podrobné pokyny pro použití a doporučení osvědčených postupů, které vám pomohou vytvořit kvalitní slugi.
Proč používat převod textu na slug?
🔍 Optimalizace pro SEO
Klíčová slova v adresách URL pomáhají vyhledávačům pochopit obsah stránky a zlepšit hodnocení. Například example.com/blog/how-to-learn-javascript je efektivnější než example.com/blog/123.
👁️ Čitelnost a sdílení
Uživatelé okamžitě pochopí obsah z adresy URL. Slugy se lépe sdílejí na sociálních sítích a snáze se pamatují nebo ručně píší.
💻 Systémová kompatibilita
Zabraňuje chybám způsobeným speciálními znaky v názvech souborů nebo adresách URL. Zajišťuje kompatibilitu napříč platformami (Windows/Linux/macOS) a eliminuje problémy s kódováním.
🗄️ Příznivé pro databáze
Používají se jako jedinečné identifikátory (např. uživatelská jména, štítky) pro snížení rizika SQL injektů a zlepšení výkonu indexování a dotazů.
Co je převod textu na slug?
Slug je zkrácená, standardizovaná verze textu používaná jako URL, název souboru nebo identifikátor. Mezi běžné úpravy patří standardizace velikosti písmen, odstranění interpunkce a spojení slov oddělovači.
- Priorita ASCII: Odstranit přízvuky a symboly, ponechat pouze alfanumerické znaky a mezery
- Kompatibilita s Unicode: Před zpracováním normalizovat většinu znaků jazyků pomocí NFKD
- Bezpečné pro URL: Výstup obsahuje pouze písmena, čísla a oddělovače – připraveno pro přímé použití v cestách
Často kladené otázky
Otázka: Jak jsou zpracovávány čínské znaky?
Odpověď: Ve výchozím nastavení se odstraňují diakritická znaménka a ponechávají se znaky pinyin. Čistě čínský text může být prázdný; doporučuje se před vytvářením slugů převést ručně na pinyin, nebo použít nástroj pro převod čínského pinyinu.
Otázka: Proč je můj výsledek prázdný?
Odpověď: Váš vstup se může skládat výhradně z interpunkčních znamének, symbolů nebo mezer, nebo všechna slova mohla být odstraněna filtrováním stop slov. Zkuste vypnout možnost stop slov nebo upravit svůj vstup.
Otázka: Mám používat - nebo _ jako oddělovač?
Odpověď: Pro SEO používejte - (pomlčku), protože Google ji považuje za mezeru; _ (podtržítko) je považováno za spojovací symbol, který brání oddělení slov. Pro názvy souborů je přijatelné obojí.
Otázka: Existuje omezení délky slugů?
Odpověď: Neexistuje žádné technické omezení, ale doporučuje se udržovat sluby pod 50 znaků pro lepší zobrazení adresy URL a SEO. Příliš dlouhé sluby mohou být vyhledávači oříznuty.
Osvědčené postupy
Doporučené postupy
- ✓ Udržte to krátké (doporučeno méně než 50 znaků)
- ✓ Vyhněte se speciálním znakům; používejte pouze písmena, číslice a oddělovače
- ✓ Používejte malá písmena, abyste předešli problémům s rozlišováním velkých a malých písmen
- ✓ Odstraňte stopwords pro zlepšení sémantické hustoty
Těmto postupům se vyhněte
- ✗ Neuvádějte citlivé informace (např. ID, e-maily, hesla)
- ✗ Nepoužívejte speciální znaky (např. @#$%^&*)
- ✗ Nenechávejte mezery ani souvislé oddělovače
- ✗ Neopakujte stejné slovo
Technické detaily
Používá rozklad NFKD + odstranění kombinujících diakritik (\p{M}), převádí Cafe na Café. Podporuje většinu latinkou založených znaků.
Založeno na běžných anglických slovech (a/an/the/and/or/of/to/in/on/for/at/by/with); lze přizpůsobit. Čínské stopwords vyžadují samostatné zpracování.
Vyžaduje podporu ES6+ a regulárních výrazů Unicode (\p{...}). Podporováno v moderních prohlížečích: Chrome 64+, Firefox 78+, Safari 11.1+.
Jak vygenerovat slug prostřednictvím programovacího jazyka?
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("^-+|-+$", "");
}