Búsqueda de patrones sin distinción entre mayúsculas y minúsculas con el método Str::is de Laravel
- Publicado el 04 febrero, 2025
 - Palabras: 60
 
¿Necesitas una comparación de patrones flexible en tus cadenas? El método Str::is ahora admite comparaciones que no distinguen entre mayúsculas y minúsculas, lo que hace que la comparación de patrones de cadenas sea más versátil.
                #Uso básico
El método Str::is determina si una cadena determinada coincide con un patrón determinado. Se pueden utilizar asteriscos como valores comodín:
use IlluminateSupportStr;
// Simple string matching
Str::is('Admin', 'admin', true); // true
// Wildcard pattern matching
Str::is('*.jpg', 'photo.JPG', true); // true
// Prefix matching
Str::is('SKU123*', 'sku12345', true); // true
// Custom patterns
Str::is('prd-001*', 'PRD-001-XYZ', true); // true
// Email matching
Str::is('JOHN.DOE@example.com', 'john.doe@example.com', true); // true
#Ejemplo práctico
A continuación se explica cómo podría usarlo en un sistema de procesamiento de archivos:
class FileProcessor
{
    protected array $allowedExtensions = ['jpg', 'png', 'pdf'];
    public function validateFile(string $filename)
    {
        foreach ($this->allowedExtensions as $ext) {
            if (Str::is("*.{$ext}", $filename, true)) {
                return true;
            }
        }
        
        return false;
    }
    public function processUserUploads(array $files)
    {
        return collect($files)->filter(function ($file) {
            // Match user-specific files (e.g., USER123-*.*)
            return Str::is("USER*-*.*", $file, true);
        });
    }
    public function categorizeDocument(string $filename)
    {
        $patterns = [
            'invoice' => 'INV-*.*',
            'report' => 'RPT-*.*',
            'contract' => 'CTR-*.*'
        ];
        foreach ($patterns as $type => $pattern) {
            if (Str::is($pattern, $filename, true)) {
                return $type;
            }
        }
        return 'other';
    }
}
// Usage
$processor = new FileProcessor();
$processor->validateFile('image.JPG');     // true
$processor->validateFile('document.PDF');   // true
$processor->categorizeDocument('INV-001.pdf');  // 'invoice'
$processor->categorizeDocument('inv-002.PDF');  // 'invoice'
La opción que no distingue entre mayúsculas y minúsculas en Str::is hace que la coincidencia de patrones sea más flexible y fácil de usar.
    Desarrollador backend especializado en PHP y Laravel, con sede en Santander, Cantabria. Más de 15 años de experiencia en el desarrollo de aplicaciones web a medida y en la modernización de código heredado.
Fuente: Harris Raftopoulos
Artículos relacionados
Inicia la conversación
Hazte miembro de Antonio Jenaro para comenzar a comentar.
Regístrate ahora¿Ya estás registrado? Inicia sesión