Qué es la clase Str
La claseIlluminate\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.
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.
Fluent Strings (encadenamiento)
Comenzando conStr::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 postEncadenamiento 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
Métodos habituales de Str
Métodos habituales de Str
| Método | Uso |
|---|---|
Str::slug($str) | Slug amigable para URL |
Str::limit($str, $n) | Trunca por número de caracteres |
Str::contains($str, $needle) | Comprueba si contiene una subcadena |
Str::startsWith($str, $needle) | Comprueba si empieza por |
Str::endsWith($str, $needle) | Comprueba si termina en |
Str::replace($search, $replace, $str) | Reemplaza |
Str::camel($str) | Convierte a camelCase |
Str::snake($str) | Convierte a snake_case |
Str::kebab($str) | Convierte a kebab-case |
Str::studly($str) | Convierte a StudlyCase |
Str::upper($str) | A mayúsculas |
Str::lower($str) | A minúsculas |
Str::squish($str) | Elimina espacios redundantes |
Str::after($str, $search) | Obtiene lo que hay después |
Str::before($str, $search) | Obtiene lo que hay antes |
Str::between($str, $from, $to) | Obtiene lo que hay entre dos |
Str::mask($str, '*', $index) | Enmascara |
Str::random($length) | Cadena aleatoria |
Str::uuid() | Genera un UUID |
Str::of($str) | Punto de entrada al estilo fluido |
Estático frente a Fluent (Str::of)
Estático frente a Fluent (Str::of)
Cuándo usar el método estático:Cuándo usar Fluent (
- Una o dos transformaciones.
- Código sencillo y legible.
Str::of):- Tres o más transformaciones.
- Con lógica condicional (
when()). - Cuando quieres leer el proceso de arriba abajo.
Str frente a funciones nativas de PHP
Str frente a funciones nativas de PHP
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.