Функции для работы с URL
Функции, упомянутые в этом разделе, оптимизированы для максимальной производительности и в основном не следуют стандарту RFC-3986. Функции, реализующие RFC-3986, имеют суффикс RFC
в своем названии и обычно работают медленнее.
Вы можете использовать варианты функций без RFC
, когда работаете с публично зарегистрированными доменами, которые не содержат ни пользовательских строк, ни символов @
.
В таблице ниже указано, какие символы в URL могут (✔
) или не могут (✗
) быть разобраны соответствующими вариантами RFC
и non-RFC
:
Символ | non-RFC | RFC |
---|---|---|
' ' | ✗ | ✗ |
\t | ✗ | ✗ |
< | ✗ | ✗ |
> | ✗ | ✗ |
% | ✗ | ✔* |
{ | ✗ | ✗ |
} | ✗ | ✗ |
| | ✗ | ✗ |
\\ | ✗ | ✗ |
^ | ✗ | ✗ |
~ | ✗ | ✔* |
[ | ✗ | ✗ |
] | ✗ | ✔ |
; | ✗ | ✔* |
= | ✗ | ✔* |
& | ✗ | ✔* |
Символы, отмеченные *
, являются суб-разделителями в RFC 3986 и разрешены для пользовательской информации после символа @
.
Функции, которые извлекают части URL
Если соответствующая часть отсутствует в URL, возвращается пустая строка.
protocol
Извлекает протокол из URL.
Примеры типичных возвращаемых значений: http, https, ftp, mailto, tel, magnet.
domain
Извлекает имя хоста из URL.
Синтаксис
Аргументы
url
— URL. String.
URL может быть указан с протоколом или без него. Примеры:
По этим примерам функция domain
возвращает следующие результаты:
Возвращаемые значения
- Имя хоста, если входная строка может быть разобрана как URL, иначе пустая строка. String.
Пример
domainRFC
Извлекает имя хоста из URL. Похоже на domain, но соответствует RFC 3986.
Синтаксис
Аргументы
url
— URL. String.
Возвращаемые значения
- Имя хоста, если входная строка может быть разобрана как URL, иначе пустая строка. String.
Пример
domainWithoutWWW
Возвращает домен без предваряющего www.
, если он есть.
Синтаксис
Аргументы
url
— URL. String.
Возвращаемые значения
- Имя домена, если входная строка может быть разобрана как URL (без предваряющего
www.
), иначе пустая строка. String.
Пример
domainWithoutWWWRFC
Возвращает домен без предваряющего www.
, если он есть. Похоже на domainWithoutWWW, но соответствует RFC 3986.
Синтаксис
Аргументы
url
— URL. String.
Возвращаемые значения
- Имя домена, если входная строка может быть разобрана как URL (без предваряющего
www.
), иначе пустая строка. String.
Пример
Запрос:
Результат:
topLevelDomain
Извлекает домен верхнего уровня из URL.
Аргументы
url
— URL. String.
URL может быть указан с протоколом или без него. Примеры:
Возвращаемые значения
- Имя домена, если входная строка может быть разобрана как URL. В противном случае возвращается пустая строка. String.
Пример
Запрос:
Результат:
topLevelDomainRFC
Извлекает домен верхнего уровня из URL. Похоже на topLevelDomain, но соответствует RFC 3986.
Аргументы
url
— URL. String.
URL может быть указан с протоколом или без него. Примеры:
Возвращаемые значения
- Имя домена, если входная строка может быть разобрана как URL. В противном случае возвращается пустая строка. String.
Пример
Запрос:
Результат:
firstSignificantSubdomain
Возвращает "первый значимый поддомен".
Первый значимый поддомен — это домен второго уровня для com
, net
, org
или co
, в противном случае это домен третьего уровня.
Например, firstSignificantSubdomain ('https://news.clickhouse.com/') = 'clickhouse', firstSignificantSubdomain ('https://news.clickhouse.com.tr/') = 'clickhouse'
.
Список "незначительных" доменов второго уровня и другие детали реализации могут изменяться в будущем.
Синтаксис
Аргументы
url
— URL. String.
Возвращаемое значение
- Первый значимый поддомен. String.
Пример
Запрос:
Результат:
firstSignificantSubdomainRFC
Возвращает "первый значимый поддомен".
Первый значимый поддомен — это домен второго уровня для com
, net
, org
или co
, в противном случае это домен третьего уровня.
Например, firstSignificantSubdomain ('https://news.clickhouse.com/') = 'clickhouse', firstSignificantSubdomain ('https://news.clickhouse.com.tr/') = 'clickhouse'
.
Список "незначительных" доменов второго уровня и другие детали реализации могут изменяться в будущем.
Похоже на firstSignficantSubdomain, но соответствует RFC 1034.
Синтаксис
Аргументы
url
— URL. String.
Возвращаемое значение
- Первый значимый поддомен. String.
Пример
Запрос:
Результат:
cutToFirstSignificantSubdomain
Возвращает часть домена, которая включает домены верхнего уровня до "первого значимого поддомена".
Синтаксис
Аргументы
url
— URL. String.
Возвращаемое значение
- Часть домена, которая включает домены верхнего уровня до первого значимого поддомена, если это возможно, в противном случае возвращает пустую строку. String.
Пример
Запрос:
Результат:
cutToFirstSignificantSubdomainRFC
Возвращает часть домена, которая включает домены верхнего уровня до "первого значимого поддомена". Похоже на cutToFirstSignificantSubdomain, но соответствует RFC 3986.
Синтаксис
Аргументы
url
— URL. String.
Возвращаемое значение
- Часть домена, которая включает домены верхнего уровня до первого значимого поддомена, если это возможно, в противном случае возвращает пустую строку. String.
Пример
Запрос:
Результат:
cutToFirstSignificantSubdomainWithWWW
Возвращает часть домена, которая включает домены верхнего уровня до "первого значимого поддомена", без удаления www
.
Синтаксис
Аргументы
url
— URL. String.
Возвращаемое значение
- Часть домена, которая включает домены верхнего уровня до первого значимого поддомена (с
www
), если это возможно, в противном случае возвращает пустую строку. String.
Пример
Запрос:
Результат:
cutToFirstSignificantSubdomainWithWWWRFC
Возвращает часть домена, которая включает домены верхнего уровня до "первого значимого поддомена", без удаления www
.
Похоже на cutToFirstSignificantSubdomainWithWWW, но соответствует RFC 3986.
Синтаксис
Аргументы
url
— URL. String.
Возвращаемое значение
- Часть домена, которая включает домены верхнего уровня до первого значимого поддомена (с "www"), если это возможно, в противном случае возвращает пустую строку. String.
Пример
Запрос:
Результат:
cutToFirstSignificantSubdomainCustom
Возвращает часть домена, которая включает домены верхнего уровня до первого значимого поддомена. Принимает имя пользовательского списка TLD. Эта функция может быть полезна, если вам нужен новый список TLD или если у вас есть пользовательский список.
Пример конфигурации
Синтаксис
Аргументы
Возвращаемое значение
- Часть домена, которая включает домены верхнего уровня до первого значимого поддомена. String.
Пример
Запрос:
Результат:
Смотрите также
cutToFirstSignificantSubdomainCustomRFC
Возвращает часть домена, которая включает домены верхнего уровня до первого значимого поддомена. Принимает имя пользовательского списка TLD. Эта функция может быть полезна, если вам нужен новый список TLD или если у вас есть пользовательский список. Похоже на cutToFirstSignificantSubdomainCustom, но соответствует RFC 3986.
Синтаксис
Аргументы
Возвращаемое значение
- Часть домена, которая включает домены верхнего уровня до первого значимого поддомена. String.
Смотрите также
cutToFirstSignificantSubdomainCustomWithWWW
Возвращает часть домена, которая включает домены верхнего уровня до первого значимого поддомена без удаления www
.
Принимает имя пользовательского списка TLD.
Может быть полезно, если вам нужен новый список TLD или если у вас есть пользовательский список.
Пример конфигурации
Синтаксис
Аргументы
Возвращаемое значение
- Часть домена, которая включает домены верхнего уровня до первого значимого поддомена без удаления
www
. String.
Пример
Запрос:
Результат:
Смотрите также
cutToFirstSignificantSubdomainCustomWithWWWRFC
Возвращает часть домена, которая включает домены верхнего уровня до первого значимого поддомена без удаления www
.
Принимает имя пользовательского списка TLD.
Может быть полезно, если вам нужен новый список TLD или если у вас есть пользовательский список.
Похоже на cutToFirstSignificantSubdomainCustomWithWWW, но соответствует RFC 3986.
Синтаксис
Аргументы
Возвращаемое значение
- Часть домена, которая включает домены верхнего уровня до первого значимого поддомена без удаления
www
. String.
Смотрите также
firstSignificantSubdomainCustom
Возвращает первый значимый поддомен. Принимает имя пользовательского списка TLD. Может быть полезно, если вам нужен новый список TLD или если у вас есть пользовательский список.
Пример конфигурации
Синтаксис
Аргументы
Возвращаемое значение
- Первый значимый поддомен. String.
Пример
Запрос:
Результат:
Смотрите также
firstSignificantSubdomainCustomRFC
Возвращает первый значимый поддомен. Принимает имя пользовательского списка TLD. Может быть полезно, если вам нужен новый список TLD или если у вас есть пользовательский список. Похоже на firstSignificantSubdomainCustom, но соответствует RFC 3986.
Синтаксис
Аргументы
Возвращаемое значение
- Первый значимый поддомен. String.
Смотрите также
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 для извлечения протокола. String.
Возвращаемое значение
- Протокол или пустая строка, если его невозможно определить. String.
Пример
Запрос:
Результат:
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. String.
Возвращаемое значение
username:password@host:port
. String.
Пример
Запрос:
Результат:
Функции, которые удаляют часть URL
Если в URL нет ничего подобного, URL остается без изменений.
cutWWW
Удаляет префикс www.
(если он присутствует) из домена URL.
cutQueryString
Удаляет строку запроса, включая вопросительный знак.
cutFragment
Удаляет идентификатор фрагмента, включая решетку.
cutQueryStringAndFragment
Удаляет строку запроса и идентификатор фрагмента, включая вопросительный знак и решетку.
cutURLParameter(url, name)
Удаляет параметр name
из URL, если он присутствует.
Эта функция не кодирует и не декодирует символы в именах параметров, например, Client ID
и Client%20ID
рассматриваются как разные имена параметров.
Синтаксис
Аргументы
Возвращаемое значение
- URL с удаленным параметром
name
. Строка.
Пример
Запрос:
Результат: