Coduo\TuTu\Request\Path\Parser::extractPlaceholders PHP Method

extractPlaceholders() public method

public extractPlaceholders ( Request $request, $pathPattern )
$request Symfony\Component\HttpFoundation\Request
    public function extractPlaceholders(Request $request, $pathPattern)
    {
        preg_match_all('#\\{\\w+\\}#', $pathPattern, $placeholders, PREG_OFFSET_CAPTURE | PREG_SET_ORDER);
        if (!count($placeholders)) {
            return array();
        }
        $placeholderNames = array();
        foreach ($placeholders as $placeholderMatch) {
            $placeholder = $placeholderMatch[0][0];
            $placeholderNames[] = substr($placeholder, 1, -1);
            $pathPattern = str_replace($placeholder, '__PLACEHOLDER__', $pathPattern);
        }
        $pathPattern = '/^' . str_replace('__PLACEHOLDER__', '([^\\/]*)', preg_quote($pathPattern, '/')) . '$/i';
        if (0 === preg_match($pathPattern, $request->getPathInfo(), $matches)) {
            return array();
        }
        return array_combine($placeholderNames, array_slice($matches, 1, count($placeholders)));
    }

Usage Example

Example #1
0
 /**
  * @param Element $config
  * @param Request $request
  * @return Response
  */
 public function build(Element $config, Request $request)
 {
     $content = $this->twig->render($config->getResponse()->getContent(), ['request' => $request, 'path' => $this->requestParser->extractPlaceholders($request, $config->getRequest()->getPath())]);
     return new Response($content, $config->getResponse()->getStatus(), $config->getResponse()->getHeaders());
 }