Skip to content

Instantly share code, notes, and snippets.

@jongacnik
Created September 27, 2018 19:20
Show Gist options
  • Save jongacnik/52651353ddcb9d9aae01b84458827f91 to your computer and use it in GitHub Desktop.
Save jongacnik/52651353ddcb9d9aae01b84458827f91 to your computer and use it in GitHub Desktop.
URL Pattern

URL Pattern

Sometimes I find it useful to match the current url against a set of keys, maybe to grab a model or define an active state. Things like that. An approach I've been using looks a little like:

<?php
  
function urlpattern ($path, $patterns) {
  foreach ($patterns as $pattern => $name) {
    if ($pattern === '*') continue; // skip default
    if (preg_match($pattern, $path) === 1) {
      return $name;
    }
  }
  // if we made it here, return default
  if (isset($patterns['*'])) {
    return $patterns['*'];
  }
}

Using it looks a bit like:

<?php

$patterns = [
  '/about\/?$/' => 'about',
  '/projects\/?$/' => 'projects',
  '/projects\/(\d+)\/?$/' => 'project',
  '*' => 'default'
];

$model = urlpattern($_SERVER['REQUEST_URI'], $patterns);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment