Функции для работы с URL
Функции, упомянутые в этом разделе, оптимизированы для максимальной производительности и в большинстве случаев не соответствуют стандарту RFC-3986. Функции, которые реализуют RFC-3986, имеют RFC
в конце своего имени и, как правило, работают медленнее.
Вы можете в целом использовать не-RFC
варианты функций, когда работаете с публично зарегистрированными доменами, которые не содержат ни пользовательских строк, ни символов @
.
Таблица ниже показывает, какие символы в URL могут (✔
) или не могут (✗
) быть разобраны соответствующими вариантами RFC
и не-RFC
:
Symbol | non-RFC | RFC |
---|---|---|
' ' | ✗ | ✗ |
\t | ✗ | ✗ |
< | ✗ | ✗ |
> | ✗ | ✗ |
% | ✗ | ✔* |
{ | ✗ | ✗ |
} | ✗ | ✗ |
| | ✗ | ✗ |
\\ | ✗ | ✗ |
^ | ✗ | ✗ |
~ | ✗ | ✔* |
[ | ✗ | ✗ |
] | ✗ | ✔ |
; | ✗ | ✔* |
= | ✗ | ✔* |
& | ✗ | ✔* |
Символы, отмеченные *
, являются субделимитерами в RFC 3986 и разрешены для пользовательской информации после символа @
.
Функции, которые извлекают части URL
Если соответствующая часть отсутствует в URL, возвращается пустая строка.
protocol
Извлекает протокол из URL.
Примеры типичных возвращаемых значений: http, https, ftp, mailto, tel, magnet.
domain
Извлекает имя хоста из URL.
Синтаксис
Аргументы
url
— URL. Строка.
URL может быть указан с протоколом или без него. Примеры:
Для этих примеров функция domain
возвращает следующие результаты:
Возвращаемые значения
- Имя хоста, если входная строка может быть разобрана как URL, в противном случае возвращается пустая строка. Строка.
Пример
domainRFC
Извлекает имя хоста из URL. Аналогично domain, но соответствует RFC 3986.
Синтаксис
Аргументы
url
— URL. Строка.
Возвращаемые значения
- Имя хоста, если входная строка может быть разобрана как URL, в противном случае возвращается пустая строка. Строка.
Пример
domainWithoutWWW
Возвращает домен без ведущего www.
, если он присутствует.
Синтаксис
Аргументы
url
— URL. Строка.
Возвращаемые значения
- Имя домена, если входная строка может быть разобрана как URL (без ведущего
www.
), в противном случае возвращается пустая строка. Строка.
Пример
domainWithoutWWWRFC
Возвращает домен без ведущего www.
, если он присутствует. Аналогично domainWithoutWWW, но соответствует RFC 3986.
Синтаксис
Аргументы
url
— URL. Строка.
Возвращаемые значения
- Имя домена, если входная строка может быть разобрана как URL (без ведущего
www.
), в противном случае возвращается пустая строка. Строка.
Пример
Запрос:
Результат:
topLevelDomain
Извлекает домен верхнего уровня из URL.
Аргументы
url
— URL. Строка.
URL может быть указан с или без протокола. Примеры:
Возвращаемые значения
- Имя домена, если входная строка может быть разобрана как URL. В противном случае возвращается пустая строка. Строка.
Пример
Запрос:
Результат:
topLevelDomainRFC
Извлекает домен верхнего уровня из URL. Аналогично topLevelDomain, но соответствует RFC 3986.
Аргументы
url
— URL. Строка.
URL может быть указан с или без протокола. Примеры:
Возвращаемые значения
- Имя домена, если входная строка может быть разобрана как URL. В противном случае возвращается пустая строка. Строка.
Пример
Запрос:
Результат:
firstSignificantSubdomain
Возвращает "первый значимый поддомен".
Первый значимый поддомен — это домен второго уровня для com
, net
, org
или co
, в противном случае это домен третьего уровня.
Например, firstSignificantSubdomain ('https://news.clickhouse.com/') = 'clickhouse'
, firstSignificantSubdomain ('https://news.clickhouse.com.tr/') = 'clickhouse'
.
Список "незначительных" доменов второго уровня и другие детали реализации могут измениться в будущем.
Синтаксис
Аргументы
url
— URL. Строка.
Возвращаемое значение
- Первый значимый поддомен. Строка.
Пример
Запрос:
Результат:
firstSignificantSubdomainRFC
Возвращает "первый значимый поддомен".
Первый значимый поддомен — это домен второго уровня для com
, net
, org
или co
, в противном случае это домен третьего уровня.
Например, firstSignificantSubdomain ('https://news.clickhouse.com/') = 'clickhouse'
, firstSignificantSubdomain ('https://news.clickhouse.com.tr/') = 'clickhouse'
.
Список "незначительных" доменов второго уровня и другие детали реализации могут измениться в будущем.
Аналогично firstSignificantSubdomain, но соответствует RFC 1034.
Синтаксис
Аргументы
url
— URL. Строка.
Возвращаемое значение
- Первый значимый поддомен. Строка.
Пример
Запрос:
Результат:
cutToFirstSignificantSubdomain
Возвращает часть домена, которая включает верхние уровни поддоменов до "первого значимого поддомена".
Синтаксис
Аргументы
url
— URL. Строка.
Возвращаемое значение
- Часть домена, которая включает верхние уровни поддоменов до первого значимого поддомена, если это возможно, в противном случае возвращает пустую строку. Строка.
Пример
Запрос:
Результат:
cutToFirstSignificantSubdomainRFC
Возвращает часть домена, которая включает верхние уровни поддоменов до "первого значимого поддомена". Аналогично cutToFirstSignificantSubdomain, но соответствует RFC 3986.
Синтаксис
Аргументы
url
— URL. Строка.
Возвращаемое значение
- Часть домена, которая включает верхние уровни поддоменов до первого значимого поддомена, если это возможно, в противном случае возвращает пустую строку. Строка.
Пример
Запрос:
Результат:
cutToFirstSignificantSubdomainWithWWW
Возвращает часть домена, которая включает верхние уровни поддоменов до "первого значимого поддомена", не убирая www
.
Синтаксис
Аргументы
url
— URL. Строка.
Возвращаемое значение
- Часть домена, которая включает верхние уровни поддоменов до первого значимого поддомена (с
www
), если это возможно, в противном случае возвращает пустую строку. Строка.
Пример
Запрос:
Результат:
cutToFirstSignificantSubdomainWithWWWRFC
Возвращает часть домена, которая включает верхние уровни поддоменов до "первого значимого поддомена", не убирая www
.
Аналогично cutToFirstSignificantSubdomainWithWWW, но соответствует RFC 3986.
Синтаксис
Аргументы
url
— URL. Строка.
Возвращаемое значение
- Часть домена, которая включает верхние уровни поддоменов до первого значимого поддомена (с "www"), если это возможно, в противном случае возвращает пустую строку. Строка.
Пример
Запрос:
Результат:
cutToFirstSignificantSubdomainCustom
Возвращает часть домена, которая включает верхние уровни поддоменов до первого значимого поддомена. Принимает пользовательское имя списка TLD. Эта функция может быть полезна, если вам нужен свежий список TLD или если у вас есть пользовательский список.
Пример конфигурации
Синтаксис
Аргументы
Возвращаемое значение
- Часть домена, которая включает верхние уровни поддоменов до первого значимого поддомена. Строка.
Пример
Запрос:
Результат:
См. Также
cutToFirstSignificantSubdomainCustomRFC
Возвращает часть домена, которая включает верхние уровни поддоменов до первого значимого поддомена. Принимает пользовательское имя списка TLD. Эта функция может быть полезна, если вам нужен свежий список TLD или если у вас есть пользовательский список. Аналогично cutToFirstSignificantSubdomainCustom, но соответствует RFC 3986.
Синтаксис
Аргументы
Возвращаемое значение
- Часть домена, которая включает верхние уровни поддоменов до первого значимого поддомена. Строка.
См. Также
cutToFirstSignificantSubdomainCustomWithWWW
Возвращает часть домена, которая включает верхние уровни поддоменов до первого значимого поддомена, не убирая www
.
Принимает пользовательское имя списка TLD.
Это может быть полезно, если вам нужен свежий список TLD или если у вас есть пользовательский список.
Пример конфигурации
Синтаксис
Аргументы
Возвращаемое значение
- Часть домена, которая включает верхние уровни поддоменов до первого значимого поддомена, не убирая
www
. Строка.
Пример
Запрос:
Результат:
См. Также
cutToFirstSignificantSubdomainCustomWithWWWRFC
Возвращает часть домена, которая включает верхние уровни поддоменов до первого значимого поддомена, не убирая www
.
Принимает пользовательское имя списка TLD.
Это может быть полезно, если вам нужен свежий список TLD или если у вас есть пользовательский список.
Аналогично cutToFirstSignificantSubdomainCustomWithWWW, но соответствует RFC 3986.
Синтаксис
Аргументы
Возвращаемое значение
- Часть домена, которая включает верхние уровни поддоменов до первого значимого поддомена, не убирая
www
. Строка.
См. Также
firstSignificantSubdomainCustom
Возвращает первый значимый поддомен. Принимает имя пользовательского списка TLD. Может быть полезно, если вам нужен свежий список TLD или у вас есть пользовательский.
Пример конфигурации:
Синтаксис
Аргументы
Возвращаемое значение
- Первый значимый поддомен. Строка.
Пример
Запрос:
Результат:
См. Также
firstSignificantSubdomainCustomRFC
Возвращает первый значимый поддомен. Принимает имя пользовательского списка TLD. Может быть полезно, если вам нужен свежий список TLD или у вас есть пользовательский. Аналогично firstSignificantSubdomainCustom, но соответствует RFC 3986.
Синтаксис
Аргументы
Возвращаемое значение
- Первый значимый поддомен. Строка.
См. Также
port
Возвращает порт или default_port
, если URL не содержит порта или не может быть разобран.
Синтаксис
Аргументы
Возвращаемое значение
- Порт или порт по умолчанию, если в URL нет порта или в случае ошибки валидации. UInt16.
Пример
Запрос:
Результат:
portRFC
Возвращает порт или default_port
, если URL не содержит порта или не может быть разобран.
Аналогично port, но соответствует RFC 3986.
Синтаксис
Аргументы
Возвращаемое значение
- Порт или порт по умолчанию, если в URL нет порта или в случае ошибки валидации. UInt16.
Пример
Запрос:
Результат:
path
Возвращает путь без строки запроса.
Пример: /top/news.html
.
pathFull
То же, что и выше, но с включенной строкой запроса и фрагментом.
Пример: /top/news.html?page=2#comments
.
protocol
Извлекает протокол из URL.
Синтаксис
Аргументы
url
— URL, из которого нужно извлечь протокол. Строка.
Возвращаемое значение
- Протокол или пустая строка, если его невозможно определить. Строка.
Пример
Запрос:
Результат:
queryString
Возвращает строку запроса без начального вопросительного знака, #
и всего, что после #
.
Пример: page=1&lr=213
.
fragment
Возвращает идентификатор фрагмента без начального символа решетки.
queryStringAndFragment
Возвращает строку запроса и идентификатор фрагмента.
Пример: page=1#29390
.
extractURLParameter(url, name)
Возвращает значение параметра name
в URL, если он присутствует, в противном случае возвращается пустая строка.
Если есть несколько параметров с этим именем, возвращается первое вхождение.
Функция предполагает, что параметр в аргументе url
закодирован так же, как в аргументе name
.
extractURLParameters(url)
Возвращает массив строк name=value
, соответствующих параметрам URL.
Значения не декодируются.
extractURLParameterNames(url)
Возвращает массив строк имен, соответствующих именам параметров URL. Значения не декодируются.
URLHierarchy(url)
Возвращает массив, содержащий URL, обрезанный в конце символами /,? в пути и строке запроса. Последовательные символы-разделители считаются одним. Срез производится в позиции после всех последовательных символов-разделителей.
URLPathHierarchy(url)
То же, что и выше, но без протокола и хоста в результате. Элемент / (корень) не включен.
encodeURLComponent(url)
Возвращает закодированный URL.
Пример:
decodeURLComponent(url)
Возвращает декодированный URL.
Пример:
encodeURLFormComponent(url)
Возвращает закодированный URL. Соответствует rfc-1866, пробел (
) кодируется как плюс (+
).
Пример:
decodeURLFormComponent(url)
Возвращает декодированный URL. Соответствует rfc-1866, простой плюс (+
) декодируется в пробел (
).
Пример:
netloc
Извлекает сетевую локализацию (username:password@host:port
) из URL.
Синтаксис
Аргументы
url
— URL. Строка.
Возвращаемое значение
username:password@host:port
. Строка.
Пример
Запрос:
Результат:
Функции, которые удаляют часть URL
Если в URL нет ничего аналогичного, URL остается неизменным.
cutWWW
Удаляет префикс www.
(если присутствует) из домена URL.
cutQueryString
Удаляет строку запроса, включая вопросительный знак.
cutFragment
Удаляет идентификатор фрагмента, включая решетку.
cutQueryStringAndFragment
Удаляет строку запроса и идентификатор фрагмента, включая вопросительный знак и решетку.
cutURLParameter(url, name)
Удаляет параметр name
из URL, если он присутствует.
Эта функция не кодирует и не декодирует символы в именах параметров, например, Client ID
и Client%20ID
рассматриваются как разные имена параметров.
Синтаксис
Аргументы
Возвращаемое значение
- URL с удаленным параметром
name
. String.
Пример
Запрос:
Результат: