Работа с Url
Работа с адресами страниц средствами Битрикс d7
при помощи класса \Bitrix\Main\Web\Uri
.
Создание объекта Uri
:
$uri = new \Bitrix\Main\Web\Uri('/path/to/page.php?param1=value1¶m2=value2');
Создание объекта Uri
из адреса текущей страницы:
$request = \Bitrix\Main\Application::getInstance()->getContext()->getRequest();
$uri = new \Bitrix\Main\Web\Uri($request->getRequestUri());
Получение адреса из объекта Uri
:
$uri->getUri();
Получение составляющих адреса:
// путь, например "/path/to/page.php"
$path = $uri->getPath();
// строка параметров, например, "param1=value1¶m2=value2"
$query = $uri->getQuery();
// так можно разбить строку параметров на массив вида array("param1" => "value1","param2" => "value2");
parse_str($uri->getQuery(), $params);
// порт, например, 80
$port = $uri->getPort();
// протокол, например, "http"
$scheme = $uri->getScheme();
// строка параметров со знаком вопроса, например, "?param1=value1¶m2=value2";
$pathQuery = $uri->getPathQuery();
// домен, например, "site.com"
$host = $uri->getHost();
// то, что находится после знака "#"
$fragment = $uri->getFragment();
// имя пользователя
$user = $uri->getUser();
// пароль
$pass = $uri->getPass();
Установка составляющих адресов:
// путь
$uri->setPath("/path/to/page.php");
// порт
$uri->setPort(80);
// протокол
$uri->setScheme("http");
// домен
$uri->setHost("site.com");
// то, что находится после знака "#"
$uri->setFragment("anchor");
// имя пользователя
$uri->setUser("username");
// пароль
$uri->setPass("gUvGhT12");
Добавление параметров в адрес:
$uri->addParams(array("param1"=>"value1","param2"=>"value2"));
Удаление параметров из адреса:
$uri->deleteParams(array("param1"=>"value1","param2"=>"value2"));
Удаление системных параметров из адреса:
$uri->deleteParams(\Bitrix\Main\HttpRequest::getSystemParameters());