PHPize Online / SQLize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
Copy Clear
Copy Format Clear
<?php $requests = [ "/", "/alias", "services", "services/alias", "uk", "uk/alias", "uk/services", "/uk/services", "" ]; $patterns = [ "/{context}/{alias?}", "/{alias?}", ]; function matchRequestToPattern($request, $patterns) { foreach ($patterns as $pattern) { $regex = patternToRegex($pattern); if (preg_match($regex, $request, $matches)) { return $pattern; // Возвращаем паттерн, если есть совпадение } } return null; // Возвращаем null, если ни один паттерн не подошел } function patternToRegex($pattern) { $regex = '#^'; $parts = explode('/', trim($pattern, '/')); if (count($parts) > 0 && $parts[0] != '') { $regex .= '/'; } foreach ($parts as $part) { if (strpos($part, '{') === 0 && strpos($part, '}') === strlen($part) - 1) { $regex .= '([^/]+)'; } elseif (strpos($part, '{') === 0 && strpos($part, '?}') === strlen($part) - 2) { $regex .= '?([^/]*?)?'; } else { $regex .= preg_quote($part, '#'); } if ($part !== end($parts)) { $regex .= '/'; } } $regex .= '/?$#'; return $regex; } foreach ($requests as $request) { $matchedPattern = matchRequestToPattern($request, $patterns); if ($matchedPattern) { echo "Запрос: " . $request . " соответствует паттерну: " . $matchedPattern . "\n"; } else { echo "Запрос: " . $request . " не соответствует ни одному паттерну\n"; } }
Show:  
Copy Clear