is_string()
La función is_string() de PHP comprueba si una variable es de tipo string. Aprende su sintaxis, valores de retorno y casos de uso comunes.
Introducción
is_string() es una función integrada de PHP que indica si un valor es del tipo string. Un string es un tipo de dato que almacena una secuencia de caracteres, como "hello" o "42".
Como PHP es de tipado débil, el tipo de un valor depende con frecuencia de su origen — entrada de formulario, una base de datos, una carga JSON o el valor de retorno de una función. is_string() te permite confirmar que un valor realmente es un string antes de llamar operaciones exclusivas de strings (como strtoupper() o substr()), evitando así errores de tipo y resultados inesperados.
Esta página cubre la sintaxis, qué devuelve is_string() para cada tipo de PHP, la trampa habitual de las "cadenas numéricas" y cómo se diferencia de funciones relacionadas como is_numeric() y gettype().
Sintaxis
is_string(mixed $value): bool$value— la variable o expresión a comprobar.- Devuelve —
truesi$valuees un string,falsepara cualquier otro tipo.
is_string() comprueba el tipo, no el contenido. Solo inspecciona un valor a la vez y nunca lo convierte.
Ejemplo básico
$var1 es un string, por lo que is_string() devuelve true; $var2 es un float, así que devuelve false.
Consejo: Usa
var_dump()en lugar deechoal probar resultados booleanos.echo trueimprime1, peroecho falseno imprime nada en absoluto — lo que hace muy fácil pasar por alto un resultadofalse.var_dump()muestrabool(true)/bool(false)de forma explícita.
Qué devuelve is_string() para cada tipo
Solo los strings reales superan la comprobación — números, booleanos, null y arrays devuelven todos false, aunque parezcan 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
?>La conclusión clave: is_string("42") es true. Las comillas lo convierten en un string de dígitos, no en un número.
Un uso práctico: guardia antes de operaciones con strings
Un uso típico es validar un valor antes de ejecutar funciones de string, para que una entrada no confiable o de tipo mixto no pueda provocar 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()
Estas dos funciones suelen confundirse porque las cadenas numéricas se sitúan entre ambas. is_string() pregunta "¿es este el tipo string?", mientras que is_numeric() pregunta "¿representa este valor un número?" — y una cadena numérica responde sí a las dos.
<?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
?>Si específicamente necesitas un tipo entero o float en lugar de un string, usa is_int() o is_float(). Para convertir un valor a string en lugar de simplemente comprobarlo, consulta settype() o strval().
Conclusión
is_string() es una comprobación de tipo simple y fiable: devuelve true solo para valores que son genuinamente del tipo string y false para todo lo demás. Recurre a ella siempre que necesites asegurarte de que un valor es un string antes de aplicar operaciones de string — por ejemplo, al manejar entrada del usuario, respuestas de API o cualquier dato cuyo tipo no esté garantizado. Recuerda las dos trampas: un número entre comillas como "42" sí es un string, y debes inspeccionar los resultados con var_dump() en lugar de echo para que un false no desaparezca. Para comprobaciones relacionadas, explora is_numeric(), is_int(), is_array() y gettype().