Парсинг url по шаблону в PHP?
Учите регулярные выражения.
p.s. А еще лучше - возьмите готовый компонент для маршрутизации.
Написал скрипт, который бы решал данный вопрос:$patterns = [
    "node/%node",
    "node/%node/news",
    "album/%album/shadowbox/%photo",
    "media/photo",
    "blogs",
    "news",
    "node/%node/players",
];

$url = "node/11111/news";

foreach ($patterns as $pattern) {

    $result_pattern = preg_replace("/\/%[^\/]+/x", '/*', $pattern);

    $to_replace = ['/\\\\\*/'];
    $replacements = ['[^\/]+'];

    $result_pattern = preg_quote($result_pattern, '/');
    $result_pattern = '/^(' . preg_replace($to_replace, $replacements, $result_pattern) . ')$/';

    if (preg_match($result_pattern, $url)) {
        echo "<pre>" . $pattern . "</pre>"; 
    }

}
Можете проанализировать, достаточно ли он функционален в данном случае. И также хотел бы узнать, зачем в данной строке  $to_replace = ['/\\\\\*/'];  слэш для экранирования используется целых 5 раз (нашел такой спсособ в интернете).