W3docs

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.
  • Retornatrue se $value for uma string, false para 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

php— editable, runs on the server

$var1 é uma string, então is_string() retorna true; $var2 é um float, então retorna false.

Dica: Use var_dump() em vez de echo ao testar resultados booleanos. echo true exibe 1, mas echo false não exibe nada — o que pode fazer um resultado false passar despercebido. var_dump() mostra bool(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().

Prática

Prática
Quais das afirmações a seguir sobre 'is_string' no PHP são verdadeiras?
Quais das afirmações a seguir sobre 'is_string' no PHP são verdadeiras?
Was this page helpful?