strtoupper()
La funzione strtoupper() in PHP converte tutte le lettere minuscole di una stringa in maiuscolo. Particolarmente utile per normalizzare dati e confronti.
Introduzione
strtoupper() converte ogni lettera minuscola in una stringa in maiuscolo e restituisce il risultato. La stringa originale rimane invariata — come tutte le funzioni PHP per le stringhe, strtoupper() restituisce una nuova stringa invece di modificare l'argomento in loco.
Si ricorre a questa funzione ogni volta che è necessario un output o un confronto senza distinzione tra maiuscole e minuscole: normalizzare codici paese (us → US), scrivere un titolo in maiuscolo o confrontare due stringhe indipendentemente dalle maiuscole. Questa pagina tratta la sintassi, l'importante avvertenza sui multibyte e le funzioni correlate che si usano spesso insieme.
Sintassi
strtoupper(string $string): string| Parte | Descrizione |
|---|---|
$string | La stringa di input. Obbligatoria. |
| Valore restituito | Una copia di $string con ogni lettera ASCII minuscola (a–z) convertita in maiuscolo. I caratteri non alfabetici vengono restituiti invariati. |
Un esempio di base
Cifre, spazi e punteggiatura (!) passano invariati — solo le lettere vengono convertite in maiuscolo. Si noti che $string contiene ancora "Hello World!"; il testo convertito si trova in $uppercase.
Confronto senza distinzione tra maiuscole e minuscole
Un utilizzo comune è confrontare l'input dell'utente senza preoccuparsi di come è stato digitato. Si convertono entrambi i lati in maiuscolo e poi si confrontano:
<?php
$input = "Yes";
if (strtoupper($input) === "YES") {
echo "Confirmed";
} else {
echo "Not confirmed";
}
// ConfirmedÈ per questo che strtoupper() (e la sua controparte strtolower()) compare così spesso nel codice per la gestione dei form e il routing.
Il problema con i multibyte
strtoupper() è basata sui byte e non tiene conto delle impostazioni locali per qualsiasi cosa al di fuori dell'ASCII puro. Sa solo come convertire in maiuscolo a–z. Le lettere accentate e non latine vengono lasciate invariate:
<?php
echo strtoupper("café"); // CAFé — the é is not convertedPer il testo Unicode (stringhe UTF-8 con accenti, ñ, cirillico, greco, ecc.) si usa mb_strtoupper(), che comprende le codifiche dei caratteri:
<?php
echo mb_strtoupper("café", "UTF-8"); // CAFÉRegola pratica: dati solo ASCII (codici, slug, etichette solo in inglese) → strtoupper(). Qualsiasi cosa che potrebbe contenere caratteri internazionali → mb_strtoupper().
Funzioni correlate
strtolower()— l'inverso: converte le lettere maiuscole in minuscolo.ucfirst()— converte in maiuscolo solo il primo carattere di una stringa.ucwords()— converte in maiuscolo il primo carattere di ogni parola.
Riepilogo
strtoupper() restituisce una nuova copia completamente in maiuscolo di una stringa ASCII ed è utile per normalizzare i dati e per i confronti senza distinzione tra maiuscole e minuscole. Per il testo che potrebbe contenere caratteri non ASCII, è preferibile usare mb_strtoupper() in modo che le lettere accentate e non latine vengano convertite correttamente.