Text slugifizieren in JavaScript, Python und PHP
Text zu slugifizieren—eine menschenlesbare Zeichenkette in einen URL-sicheren Slug umzuwandeln—ist eine häufige Aufgabe in der Webentwicklung. Ob Sie einen Blog, einen Onlineshop oder eine API bauen: Sie müssen saubere URL-Slugs aus Titeln und anderem Text erzeugen. Dieser Leitfaden zeigt, wie das in den drei beliebtesten serverseitigen Sprachen geht.
Sie möchten keinen Code schreiben? Nutzen Sie unser Tool Slugify Online, um Text sofort im Browser in Slugs umzuwandeln.
JavaScript / Node.js
Die slugify-Bibliothek verwenden
Der gängigste Ansatz in JavaScript ist das npm-Paket slugify:
npm install slugify
const slugify = require('slugify');
const title = "Café Menu — Special Édition!";
const slug = slugify(title, {
lower: true,
strict: true,
trim: true
});
console.log(slug);
// Output: cafe-menu-special-edition
Die Optionen erklärt:
lower: true— wandelt in Kleinbuchstaben umstrict: true— entfernt alle Zeichen, die keine Buchstaben, Zahlen oder das Trennzeichen sindtrim: true— entfernt führende/abschließende Trennzeichen
Manuelle Implementierung
Wenn Sie keine Abhängigkeit hinzufügen möchten, hier eine minimale slugify-Funktion:
function slugify(text) {
return text
.normalize('NFKD')
.replace(/[\u0300-\u036f]/g, '')
.toLowerCase()
.trim()
.replace(/[^a-z0-9\s-]/g, '')
.replace(/[\s_]+/g, '-')
.replace(/-+/g, '-')
.replace(/^-|-$/g, '');
}
Sie verarbeitet Akzentbuchstaben per Unicode-Normalisierung, wandelt in Kleinbuchstaben um, entfernt Sonderzeichen und fasst Leerraum zu einzelnen Bindestrichen zusammen.
Python
python-slugify verwenden
Die Standardbibliothek für die Slug-Erzeugung in Python ist python-slugify:
pip install python-slugify
from slugify import slugify
title = "Café Menu — Special Édition!"
slug = slugify(title)
print(slug)
# Output: cafe-menu-special-edition
python-slugify nutzt im Hintergrund die Bibliothek text-unidecode für die Transliteration, die eine breite Palette an Unicode-Zeichen einschließlich CJK abdeckt.
Djangos eingebautes slugify
Wenn Sie Django nutzen, gibt es ein eingebautes slugify-Hilfsmittel:
from django.utils.text import slugify
slug = slugify("My Blog Post Title")
# Output: my-blog-post-title
Hinweis: Djangos slugify führt standardmäßig keine Transliteration durch. Kombinieren Sie es für Akzentbuchstaben mit unidecode.
PHP
Laravels Str::slug()
Laravel bietet einen sauberen Slug-Helfer:
use Illuminate\Support\Str;
$slug = Str::slug("Café Menu — Special Édition!");
// Output: cafe-menu-special-edition
Str::slug() erledigt Transliteration, Kleinschreibung und das Entfernen von Sonderzeichen in einem Aufruf.
Manuelle Implementierung
Ohne Framework hier eine PHP-slugify-Funktion:
function slugify(string $text): string {
$text = transliterator_transliterate(
'Any-Latin; Latin-ASCII; Lower()',
$text
);
$text = preg_replace('/[^a-z0-9\s-]/', '', $text);
$text = preg_replace('/[\s_]+/', '-', $text);
$text = preg_replace('/-+/', '-', $text);
return trim($text, '-');
}
Sie nutzt die intl-Erweiterung von PHP für die Transliteration. Stellen Sie sicher, dass die intl-Erweiterung in Ihrer php.ini aktiviert ist.
Vergleichstabelle
| Funktion | JS (slugify) | Python (python-slugify) | PHP (Laravel) |
|---|---|---|---|
| Transliteration | Basis-Latein | Volles Unicode | Volles Unicode |
| Eigenes Trennzeichen | Ja | Ja | Ja |
| Maximale Länge | Nein | Ja | Nein (manuell) |
| CJK-Unterstützung | Nein | Ja | Teilweise |
Wann Bibliothek, wann Online-Tool?
Verwenden Sie eine Bibliothek, wenn Sie Slugs zur Laufzeit programmatisch erzeugen müssen—etwa um beim Erstellen eines Blogbeitrags automatisch eine URL zu generieren.
Verwenden Sie ein Online-Tool, wenn Sie einen einmaligen Slug brauchen oder schnell prüfen möchten, wie ein Titel als URL aussieht. Unser Text-zu-Slug-Konverter unterstützt eigene Trennzeichen, maximale Länge und Transliteration—alle Optionen, die Sie in einer Bibliothek konfigurieren würden, ganz ohne Code.