Laravel Tutorials

Enable Flexible Pattern Matching with Laravel's Case-Insensitive Str::is Method

Published
Enable Flexible Pattern Matching with Laravel's Case-Insensitive Str::is Method image

Laravel enhances string pattern matching by adding case-insensitive support to the Str::is method, providing more flexible and user-friendly string comparisons with wildcard patterns.

The enhanced Str::is method accepts a third parameter for case-insensitive matching:

use Illuminate\Support\Str;
 
// 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

This enhancement proves particularly valuable in content management systems:

class AssetManager
{
protected array $imageFormats = ['jpg', 'png', 'gif', 'webp'];
 
public function validateAsset(string $filename)
{
foreach ($this->imageFormats as $format) {
if (Str::is("*.{$format}", $filename, true)) {
return true;
}
}
 
return false;
}
 
public function processMediaUploads(array $files)
{
return collect($files)->filter(function ($file) {
// Match media-specific files (e.g., MEDIA-*.*)
return Str::is("MEDIA-*.*", $file, true);
});
}
 
public function categorizeAsset(string $filename)
{
$categories = [
'thumbnail' => 'THUMB-*.*',
'banner' => 'BNR-*.*',
'logo' => 'LOGO-*.*'
];
 
foreach ($categories as $type => $pattern) {
if (Str::is($pattern, $filename, true)) {
return $type;
}
}
 
return 'general';
}
}

The case-insensitive option in Str::is creates more robust pattern matching by eliminating case sensitivity concerns, making applications more user-friendly while maintaining the powerful wildcard functionality.

Harris Raftopoulos photo

Senior Software Engineer • Staff & Educator @ Laravel News • Co-organizer @ Laravel Greece Meetup

Sponsored

masteringlaravel logo
Laravel Code Review

Get expert guidance in a few days with a Laravel code review

Visit Laravel Code Review

The latest

View all →
Volker Dusch on the PHP RCE Vulnerabilities and Disclosure image

Volker Dusch on the PHP RCE Vulnerabilities and Disclosure

Read article
Decide with Jev: Turn AI Answers into Decisions with PHP Rules image

Decide with Jev: Turn AI Answers into Decisions with PHP Rules

Read article
Skuul: Open-Source School Management Built on Laravel image

Skuul: Open-Source School Management Built on Laravel

Read article
Laravel Read Replicas: Prevent Stale Reads After a Write image

Laravel Read Replicas: Prevent Stale Reads After a Write

Read article
Screenshot: Capture Images and PDFs with PHP and Laravel image

Screenshot: Capture Images and PDFs with PHP and Laravel

Read article
Reset Sticky Database Connections Between Laravel Queue Jobs image

Reset Sticky Database Connections Between Laravel Queue Jobs

Read article