context = $context; } public function match($rawPathinfo) { $allow = $allowSchemes = array(); $pathinfo = rawurldecode($rawPathinfo); $context = $this->context; $requestMethod = $canonicalMethod = $context->getMethod(); $host = strtolower($context->getHost()); if ('HEAD' === $requestMethod) { $canonicalMethod = 'GET'; } $matchedPathinfo = $host.'.'.$pathinfo; $regexList = array( 0 => '{^(?' .'|(?i:([^\\.]++)\\.exampple\\.com)\\.(?' .'|/abc([^/]++)(?' .'|(*:56)' .')' .')' .')$}sD', ); foreach ($regexList as $offset => $regex) { while (preg_match($regex, $matchedPathinfo, $matches)) { switch ($m = (int) $matches['MARK']) { case 56: $matches = array('foo' => $matches[1] ?? null, 'foo' => $matches[2] ?? null); // r1 return $this->mergeDefaults(array('_route' => 'r1') + $matches, array()); // r2 return $this->mergeDefaults(array('_route' => 'r2') + $matches, array()); break; } if (56 === $m) { break; } $regex = substr_replace($regex, 'F', $m - $offset, 1 + strlen($m)); $offset += strlen($m); } } if ('/' === $pathinfo && !$allow && !$allowSchemes) { throw new Symfony\Component\Routing\Exception\NoConfigurationException(); } throw $allow ? new MethodNotAllowedException(array_keys($allow)) : new ResourceNotFoundException(); } }