Skip to main content

Qué es la clase Str

La clase Illuminate\Support\Str proporciona un amplio conjunto de métodos para manipular cadenas. En lugar de invocar las funciones nativas de PHP una a una, ofrece una interfaz unificada y expresiva. Laravel ofrece dos estilos:
  • Método estático: Str::slug($title, '-'). Ideal para una operación puntual.
  • Estilo fluido (encadenamiento): Str::of($title)->slug('-')->limit(50). Perfecto para encadenar varias operaciones.
El helper global str() equivale a Str::of(). Puedes escribir cosas como str('hello')->upper().

Conversión de mayúsculas

Métodos para convertir la caja o el formato de una cadena. Útiles para nombres de columnas de BD o claves de respuestas de API.

Str::camel() / Str::snake() / Str::kebab() / Str::studly()

Str::lower() / Str::upper() / Str::title()

Slugs y URLs

Str::slug(): genera slugs amigables para URL

Imprescindible para generar URLs de artículos o páginas. Sustituye espacios y caracteres especiales por otros seguros para URL.
Si el título contiene caracteres no ASCII (por ejemplo, en japonés), el slug puede quedar vacío. Considera combinarlo con una librería de transliteración o usar IDs y timestamps en la URL.

Usar Str::of() para generar y sanear un slug de una tacada

Truncar cadenas

Str::limit(): truncar por número de caracteres

Genera texto de vista previa cuando muestras artículos o comentarios en un listado.

Str::words(): truncar por número de palabras

Búsqueda y comprobación

Str::contains(): comprueba si contiene una subcadena

Str::startsWith() / Str::endsWith()

Str::is(): patrones con comodines

Conversión y reemplazo

Str::replace(): reemplazo simple

Str::replaceArray(): reemplazo secuencial con array

Str::replaceMatches(): reemplazo con regex

Str::remove(): elimina subcadenas

Str::squish(): elimina espacios redundantes

Operaciones alrededor de una subcadena

Str::before() / Str::after()

Str::between(): extraer entre dos subcadenas

Str::start() / Str::finish(): forzar el inicio o el final

Si ya empieza (o termina) con ese carácter, no lo añade otra vez.

Str::chopStart() / Str::chopEnd(): elimina prefijo o sufijo

Enmascarado y seguridad

Str::mask(): enmascara una cadena

Útil para ocultar parte de emails o números.

Str::excerpt(): extrae con contexto

Ideal para snippets de resultados de búsqueda.

Cadenas aleatorias e identificadores

Str::random(): genera una cadena aleatoria

Útil para tokens o claves de reset de contraseña.

Str::uuid() / Str::ulid(): generar UUID/ULID

Str::password(): contraseña segura

Str::counted(): forma singular/plural con la cifra

Devuelve el singular o el plural en función del número y lo acompaña con el valor formateado.
También con estilo fluido:
Ideal para mostrar recuentos en inglés en la interfaz (por ejemplo, «1 item» vs «2 items»). La separación de miles se aplica automáticamente.

Fluent Strings (encadenamiento)

Comenzando con Str::of() (o str()) obtienes una instancia de Stringable sobre la que encadenar métodos. Cuando quieras usarla como string, castea con (string) o úsala en un contexto de cadena.

Ejemplos prácticos

Generar el slug de un post
Extraer el dominio de una URL
Sanear la entrada del usuario
Convertir un nombre de clase en ruta de archivo

Encadenamiento condicional (when())

pipe(): intercalar cualquier callback

Métodos habituales sobre Str::of()

Los métodos disponibles son prácticamente los mismos que los estáticos. Los más comunes:

Resumen

Cuándo usar el método estático:
  • Una o dos transformaciones.
  • Código sencillo y legible.
Cuándo usar Fluent (Str::of):
  • Tres o más transformaciones.
  • Con lógica condicional (when()).
  • Cuando quieres leer el proceso de arriba abajo.
Usar la clase Str en lugar de strtolower(), substr(), str_replace(), etc. te aporta:
  • Soporte seguro de caracteres multibyte (usa internamente mb_*).
  • Encadenamiento para agrupar transformaciones.
  • Una interfaz coherente (no hace falta memorizar el orden de los argumentos).
  • Coherencia con el estilo de código de Laravel.
Última modificación el 13 de julio de 2026