Я работаю над своим мини-маршрутизатором url в PHP. До сих пор у меня есть регулярное выражение для извлечения переменных в URL, заключенной в {} (Глядя на маршрутизаторе код Symfony в):Regex для сопоставления маршрутов в PHP
public function parse($pattern)
{
$matches = '';
$variables = array();
$pos = 0;
preg_match_all('#\{\w+\}#', $pattern, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER);
foreach ($matches as $match)
{
$varName = substr($match[0][0], 1, -1);
if(is_numeric($varName)) {
throw new Exception('Argument cannot be a number');
}
if (in_array($varName, $variables)) {
throw new \LogicException(sprintf('More then one occurrence of variable name "%s".', $varName));
}
$variables[] = $varName;
}
return ['variables' => $variables];
}
Так что этот метод извлекает ВАР, теперь мне нужно регулярное выражение, чтобы соответствовать образцу маршрут с адресом. Я начал изучать регулярные выражения, но мне все же нехорошо обмануть голову.
Таким образом, вы должны знать, как работает эта функция? Или вы хотите, чтобы другой набор регулярных выражений выполнял то, что вы хотите? Не совсем вам :) –
Мне нужно другое regex :) Мне нужно создать регулярное выражение, чтобы я мог использовать его для сопоставления, поэтому, если у меня есть:/hello/{name}, метод пока извлекает только 'name' , но мне нужно создать регулярное выражение, которое будет соответствовать/привет/Сэм, я надеюсь, что в моем вопросе я буду ясно. –
Вам нужно предоставить примеры URL-адресов. Также удалите тег маршрутизатора. – Laurel