Text Slugify (URL)
Wandelt Text in URL-freundliche Slugs um – unterstützt Kleinbuchstaben, Trennzeichen und benutzerdefinierte Stoppwörter.
Warum Slugify verwenden?
🔍 SEO-Optimierung
Keywords in URLs helfen Suchmaschinen, den Seitentext zu verstehen und das Ranking zu verbessern. Beispiel: example.com/blog/how-to-learn-javascript ist benutzerfreundlicher als example.com/blog/123.
👁️ Lesbarkeit und Teilen
Benutzer erkennen den Inhalt direkt an der URL – ideal für soziale Medien, leichter zu merken und manuell einzugeben.
💻 Systemkompatibilität
Vermeidet Fehler durch Sonderzeichen in Dateinamen oder URLs, ist plattformübergreifend kompatibel (Windows/Linux/macOS) und verhindert Kodierungsprobleme.
🗄️ Datenbank-freundlich
Als eindeutiger Bezeichner (z. B. Benutzername, Tag) vermeidet es SQL-Injection-Risiken und erleichtert Indizierung und Abfragen.
Was ist Slugify?
Ein Slug ist eine standardisierte Kurzform eines Textes, die als URL, Dateiname oder Bezeichner verwendet wird. Typische Verarbeitungsschritte umfassen einheitliche Groß-/Kleinschreibung, Entfernen von Satzzeichen und Verbinden von Wörtern mit Trennzeichen.
- ASCII-prioritär: Akzente und Sonderzeichen尽可能 entfernen; nur Buchstaben, Zahlen und Leerzeichen behalten
- Unicode-kompatibel: Verarbeitung durch NFKD-Normalisierung für die meisten Sprachzeichen
- URL-freundlich: Ergebnis enthält nur Buchstaben, Zahlen und Trennzeichen – direkt für Pfade verwendbar
Häufig gestellte Fragen
Q: Wie werden chinesische Zeichen behandelt?
A: Standardmäßig werden Diakritika entfernt und nur die pinyin-Buchstaben beibehalten. Reine Chinesisch-Zeichen können leer werden; empfohlen wird, sie zuerst manuell in Pinyin umzuwandeln, bevor sie slugifiziert werden, oder ein Pinyin-Konvertierungswerkzeug zu verwenden.
Q: Warum ist mein Ergebnis leer?
A: Möglicherweise enthält die Eingabe nur Satzzeichen/Symbole/Leerzeichen, oder nach Aktivierung der Stoppwortfilterung bleiben keine Wörter übrig. Versuchen Sie, die Stoppwort-Option zu deaktivieren oder den Eingabetext anzupassen.
Q: Sollte ich - oder _ als Trennzeichen verwenden?
A: Für SEO wird - (Bindestrich) empfohlen, da Google ihn als Leerzeichen interpretiert; _ (Unterstrich) wird als Verbindungszeichen behandelt und erschwert die Worttrennung. Bei Dateinamen ist die Wahl frei.
Q: Gibt es eine Längenbeschränkung für Slugs?
A: Technisch gibt es keine Grenze, aber es wird empfohlen, die Länge auf unter 50 Zeichen zu halten, um die URL-Anzeige und SEO zu optimieren. Zu lange Slugs können von Suchmaschinen abgeschnitten werden.
Best Practices
Empfohlene Vorgehensweisen
- ✓ Kurz halten (empfohlen: < 50 Zeichen)
- ✓ Vermeiden Sie Sonderzeichen; verwenden Sie nur Buchstaben, Zahlen und Trennzeichen
- ✓ In Kleinbuchstaben umwandeln, um Groß-/Kleinschreibungsprobleme zu vermeiden
- ✓ Stoppwörter entfernen, um die semantische Dichte zu erhöhen
Zu vermeidende Praktiken
- ✗ Keine sensiblen Informationen enthalten (z. B. IDs, E-Mails, Passwörter)
- ✗ Keine Sonderzeichen verwenden (z. B. @#$%^&*)
- ✗ Keine Leerzeichen oder mehrfache Trennzeichen beibehalten
- ✗ Nicht dieselben Wörter wiederholen
Technische Hinweise
Verwendung von NFKD-Dekomposition + Entfernen von Kombinationszeichen (\p{M}), z. B. wird „Café“ zu „Cafe“. Unterstützt die meisten lateinischen Zeichensätze.
Basierend auf gängigen englischen Wörtern (a/an/the/and/or/of/to/in/on/for/at/by/with); kann erweitert werden. Chinesische Stoppwörter erfordern zusätzliche Verarbeitung.
Erfordert Unterstützung für ES6+ und Unicode-Regular Expressions (\p{...}). Moderne Browser (Chrome 64+, Firefox 78+, Safari 11.1+) unterstützen dies.
Wie generiert man einen Slug mit einer Programmiersprache?
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("^-+|-+$", "");
}