Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. RouteCompiler.php

function RouteCompiler::computeRegexp

Computes the regexp used to match a specific token. It can be static text or a subpattern.

Parameters

array $tokens The route tokens:

int $index The index of the current token:

int $firstOptional The index of the first optional token:

1 call to RouteCompiler::computeRegexp()
RouteCompiler::compilePattern in vendor/symfony/routing/RouteCompiler.php

File

vendor/symfony/routing/RouteCompiler.php, line 289

Class

RouteCompiler
RouteCompiler compiles Route instances to CompiledRoute instances.

Namespace

Symfony\Component\Routing

Code

private static function computeRegexp(array $tokens, int $index, int $firstOptional) : string {
    $token = $tokens[$index];
    if ('text' === $token[0]) {
        // Text tokens
        return preg_quote($token[1]);
    }
    // Variable tokens
    if (0 === $index && 0 === $firstOptional) {
        // When the only token is an optional variable token, the separator is required
        return \sprintf('%s(?P<%s>%s)?', preg_quote($token[1]), $token[3], $token[2]);
    }
    $regexp = \sprintf('%s(?P<%s>%s)', preg_quote($token[1]), $token[3], $token[2]);
    if ($index >= $firstOptional) {
        // Enclose each optional token in a subpattern to make it optional.
        // "?:" means it is non-capturing, i.e. the portion of the subject string that
        // matched the optional subpattern is not passed back.
        $regexp = "(?:{$regexp}";
        $nbTokens = \count($tokens);
        if ($nbTokens - 1 == $index) {
            // Close the optional subpatterns
            $regexp .= str_repeat(')?', $nbTokens - $firstOptional - (0 === $firstOptional ? 1 : 0));
        }
    }
    return $regexp;
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal