Hi! Could we please enable some services and cookies to improve your experience and our website?
Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code
<?php
$uri = 'uk';
$pattern = '/{context}/{alias?}';
// Извлекаем имена параметров из шаблона
preg_match_all('#\{([a-zA-Z0-9_]+)\??\}#', $pattern, $matches);
$keys = $matches[1];
// Формируем регулярное выражение
$regex = preg_replace('#/\{([a-zA-Z0-9_]+)\?\}#', '(?:/([^/]+))?', $pattern); // Обрабатываем необязательные параметры
$regex = preg_replace('#\{([a-zA-Z0-9_]+)\}#', '([^/]+)', $regex); // Обязательные параметры
$regex = '#^' . $regex . '$#';
preg_match($regex, $uri, $uriMatches);
// Приводим массив к ассоциативному виду
array_shift($uriMatches); // Убираем полное совпадение
$uriMatches = array_combine($keys, array_pad($uriMatches, count($keys), null));
print_r($uriMatches);