is_string()
A função is_string() do PHP verifica se uma variável é do tipo string. Aprenda a sintaxe, exemplos práticos e diferenças em relação a funções similares.
Introdução
is_string() é uma função nativa do PHP que informa se um valor é do tipo string. Uma string é um tipo de dado que armazena uma sequência de caracteres, como "hello" ou "42".
Como o PHP é fracamente tipado, o tipo de um valor geralmente depende de sua origem — entrada de formulário, banco de dados, payload JSON ou valor de retorno de uma função. is_string() permite confirmar que um valor realmente é uma string antes de chamar operações exclusivas para strings (como strtoupper() ou substr()), evitando erros de tipo e resultados inesperados.
Esta página aborda a sintaxe, o que is_string() retorna para cada tipo PHP, a armadilha comum da "string numérica" e como ela difere de funções relacionadas como is_numeric() e gettype().
Sintaxe
is_string(mixed $value): bool$value— a variável ou expressão a ser testada.- Retorna —
truese$valuefor uma string,falsepara qualquer outro tipo.
is_string() verifica o tipo, não o conteúdo. Ela inspeciona apenas um valor por vez e nunca o converte.
Exemplo básico
$var1 é uma string, então is_string() retorna true; $var2 é um float, então retorna false.
Dica: Use
var_dump()em vez deechoao testar resultados booleanos.echo trueexibe1, masecho falsenão exibe nada — o que pode fazer um resultadofalsepassar despercebido.var_dump()mostrabool(true)/bool(false)de forma explícita.
O que is_string() retorna para cada tipo
Apenas strings reais passam na verificação — números, booleanos, null e arrays retornam false, mesmo quando parecem strings.
<?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
?>A conclusão principal: is_string("42") é true. As aspas a tornam uma string de dígitos, não um número.
Um uso prático: verificação antes de operações com strings
Um uso típico é validar um valor antes de aplicar funções de string, para que entradas não confiáveis ou de tipo misto não causem um 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()
Essas duas funções são frequentemente confundidas porque strings numéricas ficam entre elas. is_string() pergunta "este valor é do tipo string?", enquanto is_numeric() pergunta "este valor representa um número?" — e uma string numérica responde sim a ambas.
<?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 você precisar especificamente de um tipo inteiro ou float em vez de string, use is_int() ou is_float(). Para converter um valor para string em vez de apenas verificá-lo, consulte settype() ou strval().
Conclusão
is_string() é uma verificação de tipo simples e confiável: retorna true apenas para valores genuinamente do tipo string e false para todo o resto. Use-a sempre que precisar ter certeza de que um valor é uma string antes de aplicar operações de string — por exemplo, ao lidar com entrada do usuário, respostas de API ou qualquer dado cujo tipo não esteja garantido. Lembre-se dos dois detalhes importantes: um número entre aspas como "42" é uma string, e você deve inspecionar os resultados com var_dump() em vez de echo para que um false não desapareça. Para verificações relacionadas, explore is_numeric(), is_int(), is_array() e gettype().