function drupal_match_path

Check if a path matches any pattern in a set of patterns.

Parameters

$path: The path to match.

$patterns: String containing a set of patterns separated by \n, \r or \r\n.

Return value

Boolean value: TRUE if the path matches a pattern, FALSE otherwise.

3 calls to drupal_match_path()
block_block_list_alter in modules/block/block.module
Implements hook_block_list_alter().
DrupalMatchPathTestCase::testDrupalMatchPath in modules/simpletest/tests/path.test
Run through our test cases, making sure each one works as expected.
path_is_admin in includes/path.inc
Determines whether a path is in the administrative section of the site.

File

includes/path.inc, line 312

Code

function drupal_match_path($path, $patterns) {
    $regexps =& drupal_static(__FUNCTION__);
    if (!isset($regexps[$patterns])) {
        // Convert path settings to a regular expression.
        // Therefore replace newlines with a logical or, /* with asterisks and the <front> with the frontpage.
        $to_replace = array(
            '/(\\r\\n?|\\n)/',
            // newlines
'/\\\\\\*/',
            // asterisks
'/(^|\\|)\\\\<front\\\\>($|\\|)/',
        );
        $replacements = array(
            '|',
            '.*',
            '\\1' . preg_quote(variable_get('site_frontpage', 'node'), '/') . '\\2',
        );
        $patterns_quoted = preg_quote($patterns, '/');
        $regexps[$patterns] = '/^(' . preg_replace($to_replace, $replacements, $patterns_quoted) . ')$/';
    }
    return (bool) preg_match($regexps[$patterns], $path);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.