ucfirst()
La funzione ucfirst() in PHP converte il primo carattere di una stringa in maiuscolo. Scopri sintassi, valori restituiti e casi limite.
ucfirst() restituisce una copia di una stringa con il suo primo carattere convertito in maiuscolo. Tutti gli altri caratteri vengono lasciati esattamente come erano. È la funzione a cui si ricorre quando si deve mettere in maiuscolo un nome, una frase o un'etichetta senza toccare il resto del testo.
Questa pagina illustra la sintassi, il valore restituito, i casi limite che sorprendono le persone (numeri, stringhe già in maiuscolo, testo multibyte) e come ucfirst() si differenzia dalle funzioni di capitalizzazione correlate.
Sintassi
ucfirst(string $string): string| Parametro | Descrizione |
|---|---|
$string | La stringa di input. |
Valore restituito: una nuova stringa con il primo carattere in maiuscolo. ucfirst() non modifica $string sul posto — restituisce il risultato, quindi è necessario catturarlo o visualizzarlo. Se il primo carattere non è una lettera minuscola (una cifra, un simbolo o già maiuscolo), la stringa viene restituita invariata.
Esempio base
Solo la h iniziale diventa H. La virgola, il resto delle parole e il punto esclamativo rimangono intatti — ucfirst() non mette mai in minuscolo né modifica nulla dopo il primo carattere.
Cosa non fa ucfirst()
Un errore comune è aspettarsi che ucfirst() pulisca l'intera stringa. Non lo fa:
<?php
echo ucfirst("HELLO") . "\n"; // HELLO (first char already uppercase → no change)
echo ucfirst("hELLO") . "\n"; // HELLO (only the first char is touched, not the rest)
echo ucfirst("123abc") . "\n"; // 123abc (first char is a digit → nothing to capitalize)Se si vuole ottenere una parola con la maiuscola iniziale da un input disordinato, bisogna prima convertirla in minuscolo e poi metterla in maiuscolo:
<?php
$messy = "hELLO";
echo ucfirst(strtolower($messy)); // HelloMettere in maiuscolo ogni parola
ucfirst() influisce solo sul primissimo carattere dell'intera stringa. Per mettere in maiuscolo la prima lettera di ogni parola, usare invece ucwords():
<?php
$title = "the quick brown fox";
echo ucfirst($title) . "\n"; // The quick brown fox
echo ucwords($title) . "\n"; // The Quick Brown FoxTesto multibyte / non ASCII
ucfirst() lavora byte per byte e riconosce solo le lettere ASCII (a–z). Non convertirà correttamente in maiuscolo lettere accentate o non latine come é, ñ o i caratteri cirillici. Per questi casi, la gestione consapevole dei minuscoli richiede l'estensione per le stringhe multibyte — non esiste una mb_ucfirst(), quindi un pattern comune è:
<?php
function mb_ucfirst(string $string, string $encoding = "UTF-8"): string
{
$first = mb_strtoupper(mb_substr($string, 0, 1, $encoding), $encoding);
return $first . mb_substr($string, 1, null, $encoding);
}
echo mb_ucfirst("élise"); // ÉliseQuando usarla
- Formattare l'input dell'utente — mostrare
"john"digitato in un form come"John". - Capitalizzazione della frase — mettere in maiuscolo la prima parola di un messaggio o un'etichetta generata.
- Creare identificatori leggibili — trasformare un segmento di slug in un'intestazione.
Per l'operazione inversa (mettere in minuscolo il primo carattere) vedere lcfirst(). Per modificare le maiuscole dell'intera stringa, vedere strtoupper() e strtolower().
Riepilogo
ucfirst() converte in maiuscolo solo il primo carattere di una stringa e restituisce il risultato senza modificare l'originale. Ignora i non-lettere e i caratteri già in maiuscolo, non tocca mai il resto della stringa ed è solo ASCII — combinala con strtolower() per normalizzare input disordinati, con ucwords() per mettere in maiuscolo ogni parola, oppure con le funzioni multibyte descritte sopra per il testo accentato.