Laravel
March 31
Поиск по шаблону без учёта регистра с помощью метода `Str::is` в Laravel
Нужно гибкое сравнение шаблонов в строках? Метод Str::is
в Laravel теперь поддерживает сравнение без учета регистра, что делает поиск шаблонов в строках более универсальным.
Базовое использование
Поиск по шаблону без учёта регистра:
use Illuminate\Support\Str; // Простой поиск строки Str::is('Admin', 'admin', true); // true // Поиск по шаблону с использованием подстановочных символов Str::is('*.jpg', 'photo.JPG', true); // true // Поиск префиксa Str::is('SKU123*', 'sku12345', true); // true // Пользовательские шаблоны Str::is('prd-001*', 'PRD-001-XYZ', true); // true // Сравнение адресов электронной почты Str::is('JOHN.DOE@example.com', 'john.doe@example.com', true); // true
Реальный пример
Вот как его можно использовать в системе обработки файлов:
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) { // Поиск файлов, специфичных для конкретного пользователя (например, 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'; } } // Использование $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'
Опция нечувствительности к регистру в Str::is
делает поиск по шаблону более гибким и удобным.