is_string()
La funzione is_string() di PHP verifica se una variabile è di tipo string. Scopri sintassi, esempi pratici e differenze con is_numeric().
Introduzione
is_string() è una funzione PHP integrata che indica se un valore è di tipo string. Una string è un tipo di dato che contiene una sequenza di caratteri, come "hello" o "42".
Poiché PHP è debolmente tipizzato, il tipo di un valore dipende spesso dalla sua provenienza — input di un modulo, un database, un payload JSON o il valore restituito da una funzione. is_string() consente di verificare che un valore sia davvero una string prima di chiamare su di esso operazioni riservate alle stringhe (come strtoupper() o substr()), evitando così errori di tipo e risultati inaspettati.
Questa pagina illustra la sintassi, cosa restituisce is_string() per ciascun tipo PHP, il comune problema delle "stringhe numeriche" e le differenze rispetto a funzioni correlate come is_numeric() e gettype().
Sintassi
is_string(mixed $value): bool$value— la variabile o l'espressione da testare.- Restituisce —
truese$valueè una string,falseper qualsiasi altro tipo.
is_string() controlla il tipo, non il contenuto. Ispeziona sempre un solo valore alla volta senza mai convertirlo.
Esempio base
$var1 è una string, quindi is_string() restituisce true; $var2 è un float, quindi restituisce false.
Suggerimento: Usa
var_dump()invece diechoquando stai testando risultati booleani.echo truestampa1, maecho falsenon stampa nulla — il che rende facile non accorgersi di un risultatofalse.var_dump()mostra esplicitamentebool(true)/bool(false).
Cosa restituisce is_string() per ciascun tipo
Solo le stringhe vere e proprie superano il controllo — numeri, booleani, null e array restituiscono tutti false, anche quando sembrano simili a una string.
<?php
var_dump(is_string("hello")); // bool(true)
var_dump(is_string("42")); // bool(true) — a digit string is still a string
var_dump(is_string(42)); // bool(false) — integer
var_dump(is_string(3.14)); // bool(false) — float
var_dump(is_string(true)); // bool(false) — boolean
var_dump(is_string(null)); // bool(false) — null
var_dump(is_string(['a', 'b'])); // bool(false) — array
?>Il punto chiave: is_string("42") è true. Le virgolette la rendono una string di cifre, non un numero.
Utilizzo pratico: controllo prima delle operazioni sulle stringhe
Un utilizzo tipico è la validazione di un valore prima di eseguire funzioni sulle stringhe, in modo che un input non attendibile o di tipo misto non possa causare un TypeError.
<?php
function shout($value): string {
if (!is_string($value)) {
return "Not a string";
}
return strtoupper($value) . "!";
}
echo shout("hello") . "\n"; // HELLO!
echo shout(123) . "\n"; // Not a string
?>is_string() vs. is_numeric()
Queste due funzioni vengono spesso confuse perché le stringhe numeriche si collocano a metà strada. is_string() chiede "questo valore è di tipo string?", mentre is_numeric() chiede "questo valore rappresenta un numero?" — e una string numerica risponde sì a entrambe.
<?php
$value = "42";
var_dump(is_string($value)); // bool(true) — it IS a string
var_dump(is_numeric($value)); // bool(true) — and it looks like a number
?>Se hai bisogno specificamente di un tipo integer o float anziché di una string, usa is_int() o is_float(). Per convertire un valore in string invece di limitarsi a controllarlo, consulta settype() o strval().
Conclusione
is_string() è un controllo di tipo semplice e affidabile: restituisce true solo per valori che sono genuinamente di tipo string e false per tutto il resto. Usala ogni volta che devi essere sicuro che un valore sia una string prima di applicare operazioni sulle stringhe — ad esempio quando gestisci input dell'utente, risposte API o dati il cui tipo non è garantito. Ricorda i due aspetti critici: un numero tra virgolette come "42" è una string, e dovresti esaminare i risultati con var_dump() anziché con echo per evitare che un false scompaia. Per controlli correlati, esplora is_numeric(), is_int(), is_array() e gettype().