W3docs

ucwords()

La funzione ucwords() in PHP converte in maiuscolo il primo carattere di ogni parola in una stringa. Scopri sintassi, parametri ed esempi pratici.

Introduzione

La funzione ucwords() in PHP converte in maiuscolo il primo carattere di ogni parola in una stringa e restituisce il risultato. È la funzione ideale per trasformare input utente come "jane doe" in un formato presentabile come "Jane Doe" — utile per nomi, titoli, intestazioni ed etichette.

Questa pagina illustra la sintassi, il parametro opzionale dei delimitatori, le insidie che sorprendono molti sviluppatori (la funzione non converte in minuscolo il resto della parola, e per impostazione predefinita suddivide solo in base agli spazi bianchi), e le differenze tra ucwords() e le funzioni correlate.

Sintassi

ucwords(string $string, string $separators = " \t\r\n\f\v"): string
ParametroDescrizione
$stringLa stringa di input da trasformare.
$separators(Opzionale) I caratteri che indicano l'inizio di una nuova "parola". Per impostazione predefinita sono gli spazi bianchi: spazio, tabulazione, ritorno a capo, nuova riga, avanzamento pagina e tabulazione verticale.

La funzione restituisce una nuova stringa — non modifica $string in-place, perché le stringhe PHP sono passate per valore.

Esempio di base

php— editable, runs on the server

Output:

Hello, World!

ucwords() scorre la stringa e converte in maiuscolo qualsiasi lettera che segue un delimitatore (o che si trova all'inizio). Qui sia hello che world hanno il loro primo carattere convertito in maiuscolo.

Attenzione: non converte il resto in minuscolo

Una sorpresa comune è che ucwords() tocca solo la prima lettera di ogni parola. Le lettere già in maiuscolo vengono lasciate invariate:

<?php

echo ucwords("hello WORLD"); // Hello WORLD — "WORLD" keeps its existing uppercase letters
echo "\n";
echo ucwords("MARY had a LITTLE lamb"); // MARY Had A LITTLE Lamb

Se si desidera un titolo pulito in cui solo la prima lettera di ogni parola è maiuscola, convertire prima la stringa in minuscolo con strtolower():

<?php

$title = "MARY HAD A LITTLE LAMB";
echo ucwords(strtolower($title)); // Mary Had A Little Lamb

Delimitatori personalizzati

Per impostazione predefinita solo gli spazi bianchi separano le parole, quindi i valori con trattini o pipe vengono trattati come una singola parola. Passare l'argomento opzionale $separators per rendere maiuscolo anche dopo altri caratteri:

<?php

// Default: only the first letter is capitalized.
echo ucwords("hello-world|of-php");       // Hello-world|of-php
echo "\n";

// Treat "-" and "|" as word boundaries as well.
echo ucwords("hello-world|of-php", "-|"); // Hello-World|Of-Php

Questo è utile per slug, nomi come "o'brien", o qualsiasi testo separato da token. Si noti che quando si fornisce $separators, lo spazio bianco non è più un delimitatore a meno che non venga incluso esplicitamente — quindi una chiamata tipica è ucwords($name, " -").

ucwords() vs. funzioni correlate

FunzioneCosa fa
ucfirst()Converte in maiuscolo solo il primo carattere dell'intera stringa.
ucwords()Converte in maiuscolo il primo carattere di ogni parola.
strtoupper()Converte l'intera stringa in maiuscolo.
strtolower()Converte l'intera stringa in minuscolo.
lcfirst()Converte in minuscolo il primo carattere della stringa.

Nota su caratteri multibyte e accentati

ucwords() opera byte per byte ed è affidabile per il semplice ASCII. Non converte correttamente in maiuscolo lettere accentate o non latine (ad esempio é, ñ, o il cirillico). Per la capitalizzazione dei titoli con supporto Unicode, usare l'estensione mbstring con mb_convert_case($string, MB_CASE_TITLE, "UTF-8").

Conclusione

ucwords() è il modo standard per convertire in maiuscolo la prima lettera di ogni parola in una stringa. Ricordare i suoi due comportamenti chiave: lascia invariate le lettere rimanenti (combinarla con strtolower() per un title case pulito), e suddivide in base agli spazi bianchi a meno che non vengano passati $separators personalizzati. Per il testo accentato, utilizzare mb_convert_case().

Esercizio

Pratica
Qual è la funzione di 'ucwords' in PHP?
Qual è la funzione di 'ucwords' in PHP?
Was this page helpful?