Slugify testo (URL)

Normalizza il testo in un slug amichevole per l'URL, con supporto per minuscole, separatori e rimozione personalizzata delle parole di stop.

Parametri e input

Consigliato: - o _, lunghezza 1~3 caratteri

Risultato

Perché usare Slugify?

🔍 Ottimizzazione SEO

Le parole chiave nell'URL aiutano i motori di ricerca a capire il contenuto della pagina, migliorando il posizionamento. Ad esempio, example.com/blog/how-to-learn-javascript è molto più efficace di example.com/blog/123.

👁️ Leggibilità e condivisione

Gli utenti possono capire il contenuto semplicemente guardando l'URL, rendendolo più adatto alla condivisione sui social media e più facile da ricordare o digitare manualmente.

💻 Compatibilità del sistema

Evita errori causati da caratteri speciali nei nomi dei file o negli URL, garantendo compatibilità tra piattaforme (Windows/Linux/macOS) e prevenendo problemi di codifica.

🗄️ Amichevole per il database

Come identificatore univoco (es. username, tag), evita rischi di SQL injection e facilita l'indicizzazione e le query.

Cos'è Slugify?

Uno slug è una sequenza di testo normalizzata utilizzata come URL, nome file o identificatore. Le operazioni comuni includono l'unificazione delle maiuscole/minuscole, la rimozione della punteggiatura e la connessione delle parole con separatori.

  • Priorità ASCII: rimuovi accenti e simboli, conserva solo lettere, numeri e spazi
  • Compatibilità Unicode: normalizza i caratteri di molte lingue con NFKD prima dell'elaborazione
  • Amichevole per l'URL: il risultato contiene solo lettere, numeri e separatori, pronto per essere usato nei percorsi

Casi d'uso

URL degli articoli del blog

Come imparare JavaScript?

how-to-learn-javascript

Nome del file

Documento dei requisiti del prodotto v2.0.docx

product-requirements-v2-0.docx

Identificatore del database

Utente-Zhang San

user-zhang-san

Domande frequenti

Q: Come vengono gestiti i caratteri cinesi?

A: Di default, vengono rimossi i segni tonali e conservate le lettere pinyin. I caratteri cinesi puri potrebbero diventare vuoti; si consiglia di convertire manualmente in pinyin prima di applicare il slugify, o di utilizzare uno strumento di conversione pinyin.

Q: Perché il mio risultato è vuoto?

A: Potrebbe essere che l'input contenga solo punteggiatura, simboli o spazi, oppure che, dopo aver attivato la rimozione delle parole di stop, non rimangano parole valide. Prova a disattivare l'opzione delle parole di stop o a modificare il contenuto di input.

Q: Quale separatore devo usare, - o _?

A: Per il SEO si consiglia di usare - (trattino), poiché Google lo interpreta come uno spazio; _ (sottolineatura) viene invece considerato un concatenatore, ostacolando la suddivisione in parole. Per i nomi di file puoi scegliere liberamente.

Q: C'è un limite di lunghezza per il slug?

A: Tecnicamente non ci sono limiti, ma si consiglia di mantenere una lunghezza inferiore a 50 caratteri per facilitare la visualizzazione nell'URL e il SEO. Slug troppo lunghi potrebbero essere troncati dai motori di ricerca.

Best practice

Pratiche consigliate

  • Mantienilo breve (consigliato < 50 caratteri)
  • Evita caratteri speciali; usa solo lettere, numeri e separatori
  • Usa lettere minuscole per evitare problemi di sensibilità maiuscole/minuscole
  • Rimuovi le parole di stop per aumentare la densità semantica

Pratiche da evitare

  • Non includere informazioni sensibili (es. ID, email, password)
  • Non usare caratteri speciali (es. @#$%^&*)
  • Non lasciare spazi o separatori consecutivi
  • Non ripetere la stessa parola

Note tecniche

Normalizzazione Unicode:

Utilizza la decomposizione NFKD e rimuove i segni combinatori (\p{M}), trasformando Café in Cafe. Supporta la maggior parte dei caratteri latini.

Lista delle parole di stop:

Basata sulle parole comuni in inglese (a/an/the/and/or/of/to/in/on/for/at/by/with); può essere estesa personalizzandola. Le parole di stop cinesi richiedono un trattamento aggiuntivo.

Compatibilità browser:

Richiede supporto per ES6+ e espressioni regolari Unicode (\p{...}). Tutti i browser moderni (Chrome 64+, Firefox 78+, Safari 11.1+) sono compatibili.

Come generare un Slug tramite un linguaggio di programmazione?

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