SlugGenerator.app

Comment slugifier du texte en JavaScript, Python et PHP

7 min de lecture

Slugifier du texte—convertir une chaîne lisible par l'humain en un slug compatible avec les URLs—est une tâche courante en développement web. Que vous construisiez un blog, un site e-commerce ou une API, vous devrez générer des slugs propres à partir de titres et d'autres textes. Ce guide montre comment le faire dans les trois langages serveur les plus populaires.

Vous ne voulez pas écrire de code ? Utilisez notre outil Slugify Online pour convertir du texte en slugs instantanément dans votre navigateur.

JavaScript / Node.js

Utiliser la bibliothèque slugify

L'approche la plus populaire en JavaScript est le paquet npm 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

Les options expliquées :

  • lower: true — convertit en minuscules
  • strict: true — supprime tous les caractères qui ne sont pas des lettres, des chiffres ou le séparateur
  • trim: true — supprime les séparateurs au début et à la fin

Implémentation manuelle

Si vous préférez ne pas ajouter de dépendance, voici une fonction slugify minimale :

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, '');
}

Elle gère les caractères accentués via la normalisation Unicode, convertit en minuscules, supprime les caractères spéciaux et réduit les espaces en simples traits d'union.

Python

Utiliser python-slugify

La bibliothèque standard pour la slugification en Python est 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 utilise en interne la bibliothèque text-unidecode pour la translittération, qui gère un large éventail de caractères Unicode, y compris le CJK.

Le slugify intégré de Django

Si vous utilisez Django, il dispose d'un utilitaire slugify intégré :

from django.utils.text import slugify

slug = slugify("My Blog Post Title")
# Output: my-blog-post-title

Remarque : le slugify de Django ne gère pas la translittération par défaut. Pour les caractères accentués, combinez-le avec unidecode.

PHP

Str::slug() de Laravel

Laravel fournit un helper de slug propre :

use Illuminate\Support\Str;

$slug = Str::slug("Café Menu — Special Édition!");
// Output: cafe-menu-special-edition

Str::slug() gère la translittération, la mise en minuscules et la suppression des caractères spéciaux en un seul appel.

Implémentation manuelle

Sans framework, voici une fonction slugify en PHP :

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, '-');
}

Elle utilise l'extension intl de PHP pour la translittération. Assurez-vous que l'extension intl est activée dans votre php.ini.

Tableau comparatif

FonctionnalitéJS (slugify)Python (python-slugify)PHP (Laravel)
TranslittérationLatin de baseUnicode completUnicode complet
Séparateur personnaliséOuiOuiOui
Longueur maximaleNonOuiNon (manuel)
Prise en charge du CJKNonOuiPartielle

Quand utiliser une bibliothèque plutôt qu'un outil en ligne

Utilisez une bibliothèque lorsque vous devez générer des slugs de façon programmatique à l'exécution—par exemple, générer automatiquement une URL quand un utilisateur crée un article de blog.

Utilisez un outil en ligne lorsque vous avez besoin d'un slug ponctuel ou que vous voulez vérifier rapidement à quoi ressemble un titre en tant qu'URL. Notre convertisseur de texte en slug prend en charge les séparateurs personnalisés, la longueur maximale et la translittération—toutes les options que vous configureriez dans une bibliothèque, sans écrire de code.