Используйте parse_url, чтобы получить весь URL вместо его части
Я пытался сделать эту функцию более всеобъемлющей, чтобы разобрать больше URL
В настоящее время функция у меня есть это
function _pagepeeker_format_url($url = FALSE) {
if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) {
return FALSE;
}
// try to parse the url
$parsed_url = parse_url($url);
if (!empty($parsed_url)) {
$host = (!empty($parsed_url['host'])) ? $parsed_url['host'] : '';
$port = (!empty($parsed_url['port'])) ? ':' . $parsed_url['port'] : '';
$path = (!empty($parsed_url['path'])) ? $parsed_url['path'] : '';
$query = (!empty($parsed_url['query'])) ? '?' . $parsed_url['query'] : '';
$fragment = (!empty($parsed_url['fragment'])) ? '#' . $parsed_url['fragment'] : '';
return $host . $port . $path . $query . $fragment;
}
return FALSE;
}
Эта функция превращает URL, которые выглядят так
в это
Есть ли способ заставить этот массив возвращать весь URL, а не только его часть?
Я посмотрел на php-страницу parse_url, и она помогает, обыскав стекопоток, и обнаружил пару вещей, которые я просто испытываю при попытке найти следующий шаг.
Дайте мне знать, если я могу уточнить в любом случае
Спасибо!!
2 ответа
Это то, что я использую (избавиться от parse_url и тому подобное):
function get_full_url() {
// check SSL
$ssl = "";
if ((isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"]=="on") || (isset($_SERVER["SERVER_PORT"]) && $_SERVER["SERVER_PORT"]=="443"))
{ $ssl = "s"; }
$serverport = ($_SERVER["SERVER_PORT"]!="80"?":".$_SERVER["SERVER_PORT"]:"");
return "http".$ssl."://".$_SERVER["SERVER_NAME"].$serverport.$_SERVER["REQUEST_URI"];
}
просто вызовите get_full_url(); из любой точки вашего сценария.