Перейти к основному содержимому
Перейти к основному содержимому

Функции для работы с URL

примечание

Функции, упомянутые в этом разделе, оптимизированы для максимальной производительности и в большинстве случаев не соответствуют стандарту RFC-3986. Функции, которые реализуют RFC-3986, имеют RFC в конце своего имени и, как правило, работают медленнее.

Вы можете в целом использовать не-RFC варианты функций, когда работаете с публично зарегистрированными доменами, которые не содержат ни пользовательских строк, ни символов @. Таблица ниже показывает, какие символы в URL могут () или не могут () быть разобраны соответствующими вариантами RFC и не-RFC:

Symbolnon-RFCRFC
' '
\t
<
>
%✔*
{
}
|
\\
^
~✔*
[
]
;✔*
=✔*
&✔*

Символы, отмеченные *, являются субделимитерами в RFC 3986 и разрешены для пользовательской информации после символа @.

Функции, которые извлекают части URL

Если соответствующая часть отсутствует в URL, возвращается пустая строка.

protocol

Извлекает протокол из URL.

Примеры типичных возвращаемых значений: http, https, ftp, mailto, tel, magnet.

domain

Извлекает имя хоста из URL.

Синтаксис

Аргументы

URL может быть указан с протоколом или без него. Примеры:

Для этих примеров функция domain возвращает следующие результаты:

Возвращаемые значения

  • Имя хоста, если входная строка может быть разобрана как URL, в противном случае возвращается пустая строка. Строка.

Пример

domainRFC

Извлекает имя хоста из URL. Аналогично domain, но соответствует RFC 3986.

Синтаксис

Аргументы

Возвращаемые значения

  • Имя хоста, если входная строка может быть разобрана как URL, в противном случае возвращается пустая строка. Строка.

Пример

domainWithoutWWW

Возвращает домен без ведущего www., если он присутствует.

Синтаксис

Аргументы

Возвращаемые значения

  • Имя домена, если входная строка может быть разобрана как URL (без ведущего www.), в противном случае возвращается пустая строка. Строка.

Пример

domainWithoutWWWRFC

Возвращает домен без ведущего www., если он присутствует. Аналогично domainWithoutWWW, но соответствует RFC 3986.

Синтаксис

Аргументы

Возвращаемые значения

  • Имя домена, если входная строка может быть разобрана как URL (без ведущего www.), в противном случае возвращается пустая строка. Строка.

Пример

Запрос:

Результат:

topLevelDomain

Извлекает домен верхнего уровня из URL.

Аргументы

примечание

URL может быть указан с или без протокола. Примеры:

Возвращаемые значения

  • Имя домена, если входная строка может быть разобрана как URL. В противном случае возвращается пустая строка. Строка.

Пример

Запрос:

Результат:

topLevelDomainRFC

Извлекает домен верхнего уровня из URL. Аналогично topLevelDomain, но соответствует RFC 3986.

Аргументы

примечание

URL может быть указан с или без протокола. Примеры:

Возвращаемые значения

  • Имя домена, если входная строка может быть разобрана как URL. В противном случае возвращается пустая строка. Строка.

Пример

Запрос:

Результат:

firstSignificantSubdomain

Возвращает "первый значимый поддомен". Первый значимый поддомен — это домен второго уровня для com, net, org или co, в противном случае это домен третьего уровня. Например, firstSignificantSubdomain ('https://news.clickhouse.com/') = 'clickhouse', firstSignificantSubdomain ('https://news.clickhouse.com.tr/') = 'clickhouse'. Список "незначительных" доменов второго уровня и другие детали реализации могут измениться в будущем.

Синтаксис

Аргументы

Возвращаемое значение

  • Первый значимый поддомен. Строка.

Пример

Запрос:

Результат:

firstSignificantSubdomainRFC

Возвращает "первый значимый поддомен". Первый значимый поддомен — это домен второго уровня для com, net, org или co, в противном случае это домен третьего уровня. Например, firstSignificantSubdomain ('https://news.clickhouse.com/') = 'clickhouse', firstSignificantSubdomain ('https://news.clickhouse.com.tr/') = 'clickhouse'. Список "незначительных" доменов второго уровня и другие детали реализации могут измениться в будущем. Аналогично firstSignificantSubdomain, но соответствует RFC 1034.

Синтаксис

Аргументы

Возвращаемое значение

  • Первый значимый поддомен. Строка.

Пример

Запрос:

Результат:

cutToFirstSignificantSubdomain

Возвращает часть домена, которая включает верхние уровни поддоменов до "первого значимого поддомена".

Синтаксис

Аргументы

Возвращаемое значение

  • Часть домена, которая включает верхние уровни поддоменов до первого значимого поддомена, если это возможно, в противном случае возвращает пустую строку. Строка.

Пример

Запрос:

Результат:

cutToFirstSignificantSubdomainRFC

Возвращает часть домена, которая включает верхние уровни поддоменов до "первого значимого поддомена". Аналогично cutToFirstSignificantSubdomain, но соответствует RFC 3986.

Синтаксис

Аргументы

Возвращаемое значение

  • Часть домена, которая включает верхние уровни поддоменов до первого значимого поддомена, если это возможно, в противном случае возвращает пустую строку. Строка.

Пример

Запрос:

Результат:

cutToFirstSignificantSubdomainWithWWW

Возвращает часть домена, которая включает верхние уровни поддоменов до "первого значимого поддомена", не убирая www.

Синтаксис

Аргументы

Возвращаемое значение

  • Часть домена, которая включает верхние уровни поддоменов до первого значимого поддомена (с www), если это возможно, в противном случае возвращает пустую строку. Строка.

Пример

Запрос:

Результат:

cutToFirstSignificantSubdomainWithWWWRFC

Возвращает часть домена, которая включает верхние уровни поддоменов до "первого значимого поддомена", не убирая www. Аналогично cutToFirstSignificantSubdomainWithWWW, но соответствует RFC 3986.

Синтаксис

Аргументы

Возвращаемое значение

  • Часть домена, которая включает верхние уровни поддоменов до первого значимого поддомена (с "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 — URL. Строка.
  • default_port — Порт по умолчанию, который должен быть возвращен. UInt16.

Возвращаемое значение

  • Порт или порт по умолчанию, если в URL нет порта или в случае ошибки валидации. UInt16.

Пример

Запрос:

Результат:

portRFC

Возвращает порт или default_port, если URL не содержит порта или не может быть разобран. Аналогично port, но соответствует RFC 3986.

Синтаксис

Аргументы

  • url — URL. Строка.
  • default_port — Порт по умолчанию, который должен быть возвращен. UInt16.

Возвращаемое значение

  • Порт или порт по умолчанию, если в 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 нет ничего аналогичного, URL остается неизменным.

cutWWW

Удаляет префикс www. (если присутствует) из домена URL.

cutQueryString

Удаляет строку запроса, включая вопросительный знак.

cutFragment

Удаляет идентификатор фрагмента, включая решетку.

cutQueryStringAndFragment

Удаляет строку запроса и идентификатор фрагмента, включая вопросительный знак и решетку.

cutURLParameter(url, name)

Удаляет параметр name из URL, если он присутствует. Эта функция не кодирует и не декодирует символы в именах параметров, например, Client ID и Client%20ID рассматриваются как разные имена параметров.

Синтаксис

Аргументы

  • url — URL. String.
  • name — имя параметра URL. String или Array строк.

Возвращаемое значение

  • URL с удаленным параметром name. String.

Пример

Запрос:

Результат: