function drupal_match_path in Drupal 7
Same name and namespace in other branches
- 6 includes/path.inc \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 - Functions to handle paths in Drupal, including path aliasing.
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);
}