function redirect_parse_url in Redirect 7
Same name and namespace in other branches
- 7.2 redirect.module \redirect_parse_url()
6 calls to redirect_parse_url()
- MigrateRedirectEntityHandler::complete in ./redirect.migrate.inc
- Overrides complete().
- RedirectTestHelper::addRedirect in ./redirect.test
- Add an URL redirection
- RedirectUnitTest::testLoadRedirectsBySource in ./redirect.test
- Test redirect_load_by_source().
- RedirectUnitTest::testParseURL in ./redirect.test
- Test redirect_parse_url().
- _redirect_extract_url_options in ./redirect.admin.inc
- Extract the query and fragment parts out of an URL field.
... See full list
File
- ./redirect.module, line 1501
Code
function redirect_parse_url($url) {
$original_url = $url;
$is_external = url_is_external($url);
if (!$is_external) {
$url = trim($url, " \t\n\r\0\v\\/");
}
else {
$url = trim($url);
}
$parsed = parse_url($url);
if (isset($parsed['fragment'])) {
$url = substr($url, 0, -strlen($parsed['fragment']));
$url = trim($url, '#');
}
if (variable_get('clean_url', 0) == 0 && strpos($url, '&')) {
$parsed['path'] = substr($url, 0, strpos($url, '&'));
$parsed['query'] = substr($url, strpos($url, '&') + 1);
}
if (isset($parsed['query'])) {
$url = substr($url, 0, -strlen($parsed['query']));
$url = trim($url, '?&');
parse_str($parsed['query'], $parsed['query']);
}
if (isset($parsed['scheme']) && isset($parsed['host'])) {
$base_secure_url = rtrim($GLOBALS['base_secure_url'] . base_path(), '/');
$base_insecure_url = rtrim($GLOBALS['base_insecure_url'] . base_path(), '/');
if (strpos($url, $base_secure_url) === 0) {
$url = str_replace($base_secure_url, '', $url);
$parsed['https'] = TRUE;
}
elseif (strpos($url, $base_insecure_url) === 0) {
$url = str_replace($base_insecure_url, '', $url);
}
}
if (!$is_external) {
$url = trim($url, '/');
}
if ($url == '<front>') {
$url = '';
}
$parsed['url'] = $url;
drupal_alter('redirect_parse_url', $parsed, $original_url);
return $parsed;
}