From 058e700f49bbdda96fdfe90bd62d43e3a2b44f86 Mon Sep 17 00:00:00 2001 From: Dr Masroor Ehsan Date: Wed, 22 Jan 2025 10:45:30 +0600 Subject: [PATCH] wip mapper --- app/Services/StringMatcher.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/app/Services/StringMatcher.php b/app/Services/StringMatcher.php index d65a9b0..5565aa3 100644 --- a/app/Services/StringMatcher.php +++ b/app/Services/StringMatcher.php @@ -4,18 +4,21 @@ use App\Domain\Rule\StringMatchMode; -use function strlen; - final class StringMatcher { public static function match(string $input, string $pattern, StringMatchMode $mode): bool { + if (empty($input) || empty($pattern)) { + return false; + } + return match ($mode) { StringMatchMode::Exact => strcasecmp($input, $pattern) === 0, - StringMatchMode::Contains => stripos($input, $pattern) !== false, - StringMatchMode::StartsWith => strncasecmp($input, $pattern, strlen($pattern)) === 0, - StringMatchMode::EndsWith => str_ends_with(strtolower($input), strtolower($pattern)), + StringMatchMode::Contains => str_contains($input, $pattern) , + StringMatchMode::StartsWith => str_starts_with($input, $pattern), + StringMatchMode::EndsWith => str_ends_with($input, $pattern), StringMatchMode::Regex => preg_match($pattern, $input) === 1, + default => false, }; } }