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。 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'
です。
「重要でない」セカンドレベルドメインのリストおよびその他の実装の詳細は、将来的に変更される可能性があります。
firstSignificantSubdomainに似ていますが、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リストが必要な場合やカスタムリストがある場合に便利です。
設定例
構文
引数
返される値
- 最初の重要なサブドメインまでの部分を含むドメイン(with
www
)が可能な場合。そうでない場合は空の文字列。 String.
例
クエリ:
結果:
関連情報
cutToFirstSignificantSubdomainCustomWithWWWRFC
最初の重要なサブドメインまでのトップレベルサブドメインを含むドメインの部分を返します。
www
を削除せずに、カスタムTLDリスト名を受け付けます。
新しいTLDリストが必要な場合やカスタムリストがある場合に便利です。
cutToFirstSignificantSubdomainCustomWithWWWに似ていますが、RFC 3986に準拠しています。
構文
引数
返される値
- 最初の重要なサブドメインまでの部分を含むドメイン(with
www
)が可能な場合。そうでない場合は空の文字列。 String.
関連情報
firstSignificantSubdomainCustom
最初の重要なサブドメインを返します。 カスタムTLDリスト名を受け付けます。 新しいTLDリストが必要な場合やカスタムリストがある場合に便利です。
設定例
構文
引数
返される値
- 最初の重要なサブドメイン。 String.
例
クエリ:
結果:
関連情報
firstSignificantSubdomainCustomRFC
最初の重要なサブドメインを返します。 カスタムTLDリスト名を受け付けます。 新しいTLDリストが必要な場合やカスタムリストがある場合に便利です。 firstSignificantSubdomainCustomに似ていますが、RFC 3986に準拠しています。
構文
引数
返される値
- 最初の重要なサブドメイン。 String.
関連情報
port
ポートまたは、URLにポートが含まれていないか解析できない場合はdefault_port
を返します。
構文
引数
返される値
- ポートまたは、URLにポートがないか、検証エラーが発生した場合はデフォルトポート。 UInt16.
例
クエリ:
結果:
portRFC
ポートまたは、URLにポートが含まれていない場合や解析できない場合はdefault_port
を返します。
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)
URLに存在する場合、name
パラメータの値を返します。それ以外の場合は空の文字列が返されます。
同じ名前の複数のパラメータがある場合、最初の出現が返されます。
関数は、url
パラメータ内のパラメータがname
引数と同じ方法でエンコードされていると仮定します。
extractURLParameters(url)
URLパラメータに対応するname=value
文字列の配列を返します。
値はデコードされません。
extractURLParameterNames(url)
URLパラメータの名前に対応する名前文字列の配列を返します。 値はデコードされません。
URLHierarchy(url)
URLを含む配列を返し、パスとクエリ文字列の間に/
、?
の記号で切り詰めます。
連続する区切り文字は1つとしてカウントされます。
切り捨ては、連続するすべての区切り文字の後の位置で行われます。
URLPathHierarchy(url)
上記と同じですが、結果にはプロトコルとホストが含まれません。/
要素(ルート)は含まれません。
encodeURLComponent(url)
エンコードされたURLを返します。
例:
decodeURLComponent(url)
デコードされたURLを返します。
例:
encodeURLFormComponent(url)
エンコードされたURLを返します。 rfc-1866に従い、スペース(
)はプラス(+
)としてエンコードされます。
例:
decodeURLFormComponent(url)
デコードされたURLを返します。 rfc-1866に従い、プレーンプラス(+
)はスペース(
)としてデコードされます。
例:
netloc
URLからネットワークのローカリティ(username:password@host:port
)を抽出します。
構文
引数
url
— URL。 String.
返される値
username:password@host:port
。String.
例
クエリ:
結果:
URLの部分を削除する関数
URLに似たものがない場合、URLは変更されずにそのまま残ります。
cutWWW
URLのドメインから先頭のwww.
を削除します。
cutQueryString
クエリ文字列を、疑問符を含めて削除します。
cutFragment
フラグメント識別子を、番号記号を含めて削除します。
cutQueryStringAndFragment
クエリ文字列とフラグメント識別子を、疑問符および番号記号を含めて削除します。
cutURLParameter(url, name)
URLから name
パラメータを削除します。存在する場合のみ。
この関数は、パラメータ名の文字をエンコードまたはデコードしません。たとえば、Client ID
と Client%20ID
は異なるパラメータ名として扱われます。
構文
引数
返される値
name
URLパラメータが削除されたURL。 String。
例
クエリ:
結果: