Szöveg slugolása (URL)
Normálizálja a szöveget URL-barát slug formára, támogatja kisbetűsítést, elválasztók és egyéni stopszavak eltávolítását.
Miért szükséges a Slugify?
🔍 SEO optimalizálás
A kulcsszavak az URL-ben segítik a keresőmotorokat a lap tartalmának megértésében, javítva a rangsorolást. Például: example.com/blog/how-to-learn-javascript sokkal barátiabb, mint example.com/blog/123.
👁️ Olthatóság és megosztás
A felhasználók az URL-ből közvetlenül megérthetik a tartalmat, szociális média megosztásnál barátiabbak, könnyebben megjegyezhetők és kézzel bevihetők.
💻 Rendszerkompatibilitás
Elkerüli a különleges karakterek okozta hibákat a fájlnevekben és URL-kben, keresztplatformos kompatibilitás (Windows/Linux/Mac), elkerüli kódolási problémákat.
🗄️ Adatbázis-barát
Egyedi azonosítóként használható (pl. felhasználónév, címkék), elkerüli az SQL-injekciós kockázatot, egyszerűbb indexelés és lekérdezés.
Mi az a Slugify?
A slug egy szöveg standardizált formája, amely URL-ként, fájlnévként vagy azonosítóként használatos. Gyakori műveletek: egyforma nagyságú betűk, írásjelek eltávolítása, szavak elválasztása megadott karakterrel.
- ASCII elsőbbséggel: próbálja eltávolítani az ékezeteket és szimbólumokat, csak betűket, számokat és szóközöket hagyva meg
- Unicode kompatibilis: a legtöbb nyelv karaktereit NFKD normálizálással dolgozza fel
- URL-barát: az eredmény csak betűket, számokat és elválasztókat tartalmaz, közvetlenül használható elérési útként
Gyakran ismételt kérdések
K: Hogyan kezelik a kínai karaktereket?
A: Alapértelmezés szerint az akcentusjelek eltávolításra kerülnek, és a pinyin betűk megmaradnak. Tiszta kínai szöveg esetén üres eredmény is előfordulhat; ajánlott először manuálisan átalakítani pinyinre, majd slugify-elni, vagy használni egy kínai pinyin-átalakító eszközt.
K: Miért üres az eredményem?
A: Lehet, hogy a bemenet csupán írásjelek, szimbólumok vagy szóközök, vagy a letiltott szavak szűrésével nem maradt meg egyetlen szó sem. Próbálja ki a letiltott szavak szűrésének kikapcsolását, vagy módosítsa a bemenetet.
K: A szeparátor legyen - vagy _?
A: SEO szempontból ajánlott a - (kötőjel), mivel a Google szóköznek tekinti; a _ (aláhúzás) összefüggő karakterként lesz értelmezve, ami hátrányos a szótagolás szempontjából. Fájlneveknél bármelyiket választhatja.
K: Van-e korlát a slug hosszára?
A: Technikailag nincs korlát, de ajánlott 50 karakter alatt tartani, hogy az URL megjelenítése és SEO szempontjából is kedvező legyen. Túl hosszú slug-ot a keresőmotorok vághatnak le.
Legjobb gyakorlatok
Ajánlott eljárások
- ✓ Rövid legyen (ajánlott < 50 karakter)
- ✓ Kerülje a speciális karaktereket, csak betűket, számokat és szeparátorokat használjon
- ✓ Kisbetűsre alakítás a kis- és nagybetűérzékenység elkerüléséért
- ✓ Távolítsa el a felesleges szavakat a jelentéstartalom növeléséért
Kerülendő gyakorlatok
- ✗ Ne tartalmazzon érzékeny adatokat (pl. azonosító, e-mail, jelszó)
- ✗ Ne használjon speciális karaktereket (pl. @#$%^&*)
- ✗ Ne hagyjon szóközöket vagy többszörös szeparátorokat
- ✗ Ne ismételje meg ugyanazt a szót
Technikai megjegyzések
NFKD felbontás + kombináló akcentusjelek eltávolítása (\p{M}), például a Café → Cafe. Támogatja a legtöbb latin betűs karaktert.
Angol gyakori szavak alapján (a/an/the/and/or/of/to/in/on/for/at/by/with), testreszabható bővítéssel. Kínai letiltott szavak külön kezelést igényelnek.
ES6+ és Unicode reguláris kifejezések (\p{...}) támogatása szükséges. Modern böngészők (Chrome 64+, Firefox 78+, Safari 11.1+) teljesen támogatják.
Hogyan generálható slug programozási nyelven?
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("^-+|-+$", "");
}