Активуйте гнучке порівняння шаблонів за допомогою регістронезалежного методу Str::is у Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 06 червня, 2025
У новій версії Laravel метод Str::is отримав підтримку нечутливого до регістру порівняння рядків, що робить його більш зручним для використання. Дізнайтеся, як це вдосконалення може спростити вашу роботу з шаблонами рядків і зробити ваш код ще ефективнішим

Laravel вдосконалює пошук за шаблоном у рядках, додаючи можливість нечутливого до регістру порівняння в методі Str::is, що робить порівняння рядків більш гнучким і зручним з використанням шаблонів.

Покращений метод Str::is приймає третій параметр для нечутливого до регістру порівняння:

use Illuminate\Support\Str;

// Просте порівняння рядків
Str::is('Admin', 'admin', true); // true

// Порівняння з шаблоном
Str::is('*.jpg', 'photo.JPG', true); // true

// Порівняння за префіксом
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 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) {
            // Пошук медіа-файлів (наприклад, 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';
    }
}

Опція нечутливого до регістру порівняння в Str::is забезпечує більш надійне співпадіння шаблонів, усуваючи проблеми з чутливістю до регістру, що робить програми дружніми до користувача, зберігаючи при цьому потужну функціональність шаблонів