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.

Paraméterek és bemenet

Ajánlott: - vagy _, hossza 1-3 karakter

Eredmény

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

Használati esetek

Blogbejegyzés URL-je

Hogyan tanuljam meg a JavaScript-et?

how-to-learn-javascript

Fájlnév

Termékigénylés dokumentum v2.0.docx

product-requirements-v2-0.docx

Adatbázis-azonosító

Felhasználó-张三

user-zhang-san

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

Unicode-normalizálás:

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.

Letiltott szavak listája:

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.

Böngésző kompatibilitás:

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("^-+|-+$", "");
}