Разделить базовый URL из строки запроса и фрагмента привязки
Допустим, у меня есть этот URL:
http://test.com/directory-test/?id=4746&other=454#comments
Как я могу получить URL этой конкретной страницы с помощью PHP, но без всех переменных и #s. Так, например:
http://test.com/directory-test/
Я нашел эту функцию, однако она включает ВСЕ В URL, поэтому возвращает URL, который выглядит как первый пример выше, но я хочу URL, который выглядит как второй пример.
function curPageURLALL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
1 ответ
Решение
Используйте PHP_SELF вместо REQUEST_URI:)
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["PHP_SELF"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["PHP_SELF"];
}
return $pageURL;
}
Hymm, PHP_SELF может также вернуть пример файла index.php, так что, возможно, это
function curPageURL() {
$pageURL = 'http';
if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
$pageURL .= $_SERVER["SERVER_NAME"];
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= ":".$_SERVER["SERVER_PORT"];
}
$pos = strpos($_SERVER["REQUEST_URI"],"?");
$pageURL .= ($pos===false)?$_SERVER["REQUEST_URI"]:substr($_SERVER["REQUEST_URI"],0,$pos);
return $pageURL;
}