Справочники, инструменты, документация

PHP: Как получить текущий URL

Сформировать текущий адрес страницы можно с помощью элементов массива `$_SERVER`.

Рассмотрим на примере URL: https://example.com/category/page?sort=asc

Полный URL

$url = ((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
echo $url;

// https://example.com/category/page?sort=asc

URL без GET-параметров

$url = ((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$url = explode('?', $url);
$url = $url[0];
echo $url;

// https://example.com/category/page

Основной путь и GET-параметры

$url = $_SERVER['REQUEST_URI'];
echo $url;

// /category/page?sort=asc

Только основной путь

$url = $_SERVER['REQUEST_URI'];
$url = explode('?', $url);
$url = $url[0];
echo $url;

// /category/page

Только GET-параметры

echo $_SERVER['QUERY_STRING'];

// sort=asc

Получить GET-параметр из URL

Иногда нужно быстро получить GET-параметр из строки с URL, в этом поможет PHP функция parse_url().

$url = 'http://site.ru/path?email=mail@site.ru&name=site';

$parts = parse_url($url); 
parse_str($parts['query'], $query); 

// Все GET-параметры
print_r($query);

// Параметр «email»
echo $query['email'];

Для частого использования лучше применять функцию:

function getUrlQuery($url, $key = null)
{
    $parts = parse_url($url); 
    if (!empty($parts['query'])) {
        parse_str($parts['query'], $query); 
        if (is_null($key)) {
            return $query;
        } elseif (isset($query[$key])) {
            return $query[$key];
        }    
    }

    return false;
}

// Все GET-параметры
$data = getUrlQuery('http://site.ru/path?email=mail@site.ru&name=site');
print_r($data);

// Параметр «email»
echo getUrlQuery('http://site.ru/path?email=mail@site.ru&name=site', 'email');

Результат:

Array(
  [email] => mail@site.ru
  [name] => site
)

Показать пользователю адрес сайта

 echo 'Вы находитесь на сайте '.$_SERVER['HTTP_HOST'];